全局配置项

前面的示例中,使用了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文件中读取配置。