Categories: Flask 中文教程

Flask 实例文件夹

0.8 新版功能.

Flask 0.8 引入了示例文件夹。 Flask 在很长时间使得直接引用相对应用文件夹
的路径成为可能(通过 Flask.root_path )。这也是许多开发者加载存储
在载入应用旁边的配置的方法。不幸的是,这只会在应用不是包,即根路径指向包
内容的情况下才能工作。

在 Flask 0.8 中,引入了 Flask.instance_path 并提出了“实例文件夹”
的新概念。实例文件夹被为不使用版本控制和特定的部署而设计。这是放置运行时
更改的文件和配置文件的最佳位置。

你可以在创建 Flask 应用时显式地提供实例文件夹的路径,也可以让 Flask 自
动找到它。对于显式的配置,使用 instance_path 参数:

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() 。

两者的使用示例:

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()
terry

这个人很懒,什么都没有留下~

Share
Published by
terry

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

2 小时 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago