在Flask中的参数配置保存在Flask对象的config属性中。
config实际上继承于字典,可以像修改字典一样修改它:
app = Flask(__name__)
app.config['TESTING'] = TRUE
相应的配置会直接推送到Flask对象上,所以你可以直接在Flask对象上读写:
app.testing = True
可以使用dict.update()方法来批量更新键值对:
app.config.update(
TESTING=True,
SECRETE_KEY=b'^*&BKJH^*'
)
主要有三种参数配置方法:
1. 基本配置方法
即通常的 ‘字典式’ 配置方法,如我们要配置SQLAlchemy中的数据库连接URL:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://test:test@localhost/test'
2. 从文件读取
相对于1中的配置方法,一个更为优雅解决方法是从单独的文件中读取配置。
app = Flask(__name__)
app.config.from_object('yourapplication.default_settings')
app.config.from_envvar('YOURAPPLICATION_SETTINGS')
其中 app.config.from_envvar(‘YOURAPPLICATION_SETTINGS’) 的用法和 app.config.from_pyfile(os.environ[‘YOURAPPLICATION_SETTINGS’]) ,但是app.config.from_envvar的error message更为友好。
3. 从环境变量读取
对于某些敏感信息(如加密密钥)并不适合放在程序包中。在Linux中,我们可以这样在环境变量中设置:
$ export SECRET_KEY='5f352379324c22463451387a0aec5d2f'
$ export DEBUG=False
有一点需要注意的是,环境变量中设置的值都是字符串–并不会直接解析为python中的类型.
下面是一个使用环境变量的例子:
# Example configuration
import os
ENVIRONMENT_DEBUG = os.environ.get("DEBUG", default=False)
if ENVIRONMENT_DEBUG.lower() in ("f", "false"):
ENVIRONMENT_DEBUG = False
DEBUG = ENVIRONMENT_DEBUG
SECRET_KEY = os.environ.get("SECRET_KEY", default=None)
if not SECRET_KEY:
raise ValueError("No secret key set for Flask application")