在Flask中的參數(shù)配置保存在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^*'
)
主要有三種參數(shù)配置方法:
1. 基本配置方法
即通常的 ‘字典式’ 配置方法驱富,如我們要配置SQLAlchemy中的數(shù)據(jù)庫連接URL:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://test:test@localhost/test'
2. 從文件讀取
相對于1中的配置方法锚赤,一個更為優(yōu)雅解決方法是從單獨的文件中讀取配置。
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. 從環(huán)境變量讀取
對于某些敏感信息(如加密密鑰)并不適合放在程序包中。在Linux中叫榕,我們可以這樣在環(huán)境變量中設置:
$ export SECRET_KEY='5f352379324c22463451387a0aec5d2f'
$ export DEBUG=False
有一點需要注意的是浑侥,環(huán)境變量中設置的值都是字符串--并不會直接解析為python中的類型.
下面是一個使用環(huán)境變量的例子:
# 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")