配置管理
复杂的项目需要配置各种配置环境,如果设置项缺少可以直接硬编码进来,比如下面的方式:
app.config['DEBUG']=True
app.config['SECRET_KEY'] = 'hard to guess string'
app.config 是 app.config.Config的实例,Config类继承了python内置的dict,所以我们可以使用dict的update方法
app.config.update(
DEBUG=True,
SECRET_KEY = 'hard to guess string'
)
app.config 内置的配置变量可以参考Configuration Handling 如果设置的选项很多,有想要集中管理这些设置项,我们可以把这些配置项选择放置在一个文件中,app.config 支持多种更新配置的方式。假设我们将我们的配置项防止的settings.py这个文件中,内容如下:
DEBUG=True,
SECRET_KEY = 'hard to guess string'
我们可以选择一下三种方式加载文件
1. 通过配置文件加
app.config.from_object('settings') # 通过字符串模块名字导入配置文件 import settings app.config.from_object(settings) #通过导入文件后直接传入模块对象
2.通过文件名字加载,直接传入文件名字,单是不限于只使用.py后缀的文件
# 默认当配置文件不存在时候,会抛出异常,使用silent=True
# 的时候只是返回False,但是不会抛出异常
app.config.from_pyfile('settings.py',silent=True)
3.通过环境变量加载,这种方式依然支持silent参数,获得路径后其实还是使用了from_pyfile的方式加载
#
# 在python环境变量中设置
# >export USERAPPLICATION_SETTINGS = 'settings.py'
app.config.from_envvar('USERAPPLICATION_SETTINGS')
调试模式
我们每次使用 app.run 方式开启本地应用,但是当我们在开发中修改了代码,都要手动的重启应用,这样的方式既不方便也不优雅。其实flask已经帮我们解决了开发模式代码修改后自动重启应用的功能,并在发生错误的时候,提供一个能获得错误上下文及可执行代码的调试页面。
两种开启调试模式的方法
1 直接在应用对象上设置
app.debug = True
app.run()
2. 作为run的参数传入
app.run(debug=True
注意事项:
开启调试模式会成为一个巨大的安全隐患,因此决不能用于生产环境中。