全局配置项
前面的示例中,使用了app.config.from_mapping()
来加载Flask应用的配置。Flask应用的全局配置是保存在app.config
中的,这个属性是一个字典类型对象,并提供了许多种方法来加载配置。Flask内置了一些配置项来对整体应用特性进行配置。需要注意的是,Flask扩展的配置项也会保存在app.config
中,可以将其全部定义在一个配置文件中统一加载使用。
Flask常用的配置项有:
ENV
,启动环境设置,默认为'production'
。SECRET_KEY
,用来对Cookies等安全信息进行签名的密钥。SESSION_COOKIE_NAME
,用于保存Session ID的Cookies名称。SESSION_COOKIE_DOMAIN
,用于保存Session ID的Cookies相关配置。SESSION_COOKIE_PATH
,用于保存Session ID的Cookies相关配置。SESSION_COOKIE_HTTPONLY
,用于保存Session ID的Cookies相关配置。SESSION_COOKIE_SECURE
,用于保存Session ID的Cookies相关配置。SESSION_REFRESH_EACH_REQUEST
,指示是否在每次请求时都刷新Session。SEND_FILE_MAX_AGE_DEFAULT
,文件缓存的最长有效时间。SERVER_NAME
,指定应用监听的主机和端口。APPLICATION_ROOT
,指定应用根URL路径。JSON_AS_ASCII
,指示是否将对象序列化为ASCII编码的JSON串。JSONIFY_MIMETYPE
,JSON格式输出内容所使用的MimeType。
这些配置项可以定义在独立的配置文件中,像前面示例中一样通过from_mapping()
或者通过from_object()
来加载。如果配置被定义为了一个文件,其内容类似于以下示例:
# 文件名为config.py
class Config(object):
DEBUG = False
TESTING = False
DATABASE_URI = 'sqlite:///:memory:'
class ProductionConfig(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
class DevelopmentConfig(Config):
DEBUG = True
class TestingConfig(Config):
TESTING = True
则可以使用app.config.from_object('config.ProductionConfig')
来完成配置内容的加载。
此外,Flask还提供了from_envvar()
、from_pyfile()
和from_json()
来分别从系统环境变量、Configuration配置文件和JSON文件中读取配置。