实例文件夹
Flask 0.8 引入了一个新的属性: Flask.instance_path 。
它指向一个新 名词:“实例文件夹”。实例文件夹应当处于版本控制中并进行特殊部署。这个文件 夹特别适合存放需要在应用运行中改变的东西或者配置文件。
可以要么在创建 Flask 应用时显式地提供实例文件夹的路径,要么让 Flask 自动探测 实例文件夹。显式定义使用 instance_path 参数:
```PY
app = Flask(__name__, instance_path='/path/to/instance/folder')
```
请记住,这里提供的路径 必须 是绝对路径。
如果 instance_path 参数没有提供,那么会使用以下缺省位置:
未安装的模块:
/myapp.py
/instance
未安装的包:
/myapp
/__init__.py
/instance
已安装的模块或包:
```
$PREFIX/lib/python2.X/site-packages/myapp
$PREFIX/var/myapp-instance
```
$PREFIX 是你的 Python 安装的前缀。可能是 /usr 或你的 virtualenv 的路径。可以通过打印 sys.prefix 的值来查看当前的前缀的 值。
既然可以通过使用配置对象来根据关联文件名从文件中载入配置,那么就可以通过改 变与实例路径相关联的文件名来按需要载入不同配置。在配置文件中的关联路径的行 为可以在 “关联到应用的根路径”(缺省的)和 “关联到实例文件夹”之间变换, 具体通过应用构建函数中的 instance_relative_config 来实现:
app = Flask(__name__, instance_relative_config=True)
以下是一个完整的配置 Flask 的例子,从一个模块预先载入配置,然后从实例文件 夹中的一个配置文件(如果这个文件存在的话)载入要重载的配置:
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() 。