Flask 實例文件夾

2021-08-10 17:48 更新

0.8 新版功能.

Flask 0.8 引入了示例文件夾。 Flask 在很長時間使得直接引用相對應(yīng)用文件夾 的路徑成為可能(通過 Flask.root_path )。這也是許多開發(fā)者加載存儲 在載入應(yīng)用旁邊的配置的方法。不幸的是,這只會在應(yīng)用不是包,即根路徑指向包 內(nèi)容的情況下才能工作。

在 Flask 0.8 中,引入了 Flask.instance_path 并提出了“實例文件夾” 的新概念。實例文件夾被為不使用版本控制和特定的部署而設(shè)計。這是放置運行時 更改的文件和配置文件的最佳位置。

你可以在創(chuàng)建 Flask 應(yīng)用時顯式地提供實例文件夾的路徑,也可以讓 Flask 自 動找到它。對于顯式的配置,使用 instance_path 參數(shù):

app = Flask(__name__, instance_path='/path/to/instance/folder')

請注意給出的 一定 是絕對路徑。

如果 instance_path 參數(shù)沒有賦值,會使用下面默認的位置:

  • 未安裝的模塊:

    /myapp.py
    /instance
    
  • 未安裝的包:

    /myapp
        /__init__.py
    /instance
    
  • 已安裝的包或模塊:

    $PREFIX/lib/python2.X/site-packages/myapp
    $PREFIX/var/myapp-instance
    

    $PREFIX 是你 Python 安裝的前綴。這個前綴可以是 /usr 或者你的 virtualenv 的路徑。你可以打印 sys.prefix 的值來查看前綴被設(shè)置成 了什么。

既然配置對象提供從相對文件名來載入配置的方式,那么我們也使得它從相對實例 路徑的文件名加載成為可能,如果你想這樣做。配置文件中的相對路徑的行為可以 在“相對應(yīng)用的根目錄”(默認)和 “相對實例文件夾”中切換,后者通過應(yīng)用構(gòu)造函 數(shù)的 instance_relative_config 開關(guān)實現(xiàn):

app = Flask(__name__, instance_relative_config=True)

這里有一個配置 Flask 來從模塊預(yù)載入配置并覆蓋配置文件夾中配置文件(如果 存在)的完整例子:

app = Flask(__name__, instance_relative_config=True)
app.config.from_object('yourapplication.default_settings')
app.config.from_pyfile('application.cfg', silent=True)

實例文件夾的路徑可以在 Flask.instance_path 找到。 Flask 也提供了 一個打開實例文件夾中文件的捷徑,就是 Flask.open_instance_resource() 。

兩者的使用示例:

filename = os.path.join(app.instance_path, 'application.cfg')
with open(filename) as f:
    config = f.read()

# or via open_instance_resource:
with app.open_instance_resource('application.cfg') as f:
    config = f.read()
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號