flask的Flask类初始化参数中有一个instance_path
,默认为None
。
在官网上看了相关文档Instance Folders,反复看了几遍还是不太明白其意义何在,看flask相关案例也没有见过使用的。
自己在机器上做了下测试,输出如下:
view函数加一句print current_app.root_path+'\n'+current_app.instance_path
,可以得到:
/home/xxx/Documents/flasky/flasky/app
/home/xxx/Documents/flasky/flasky/instance
其跟root_path的区别仅在于最后一个地方由app
变成了instance
,这参数是0.8版本才加的,意义何在(既然它和root_path基本一样),加了它之后能够实现什么之前所不能实现的东西吗?
看了下文檔裡面有這樣一段話,不知道能不能解答題主的疑惑:
The instance folder is designed to not be under version control and be deployment specific. It’s the perfect place to drop things that either change at runtime or configuration files.
我的理解就是類似前端html跟css分離一樣,實例資料夾與預設的跟資料夾分離,降低耦合度。方便後期修改實例的時候不影響到跟資料夾。題主說的None就是預設的實例是在根資料夾下面的,對應到題目中的例子就是在flasky目錄下面。
而現在新的版本可以透過設定instance_path參數指定具體的位置,比方說跟flasky目錄同級。