Flask的配置文件 與 session
配置文件
flask中的配置文件是一個flask.config.Config對象(繼承字典)
默認配置為:
{
'DEBUG': get_debug_flag(default=False), 是否開啟Debug模式
'TESTING': False, 是否開啟測試模式
'PROPAGATE_EXCEPTIONS': None,
'PRESERVE_CONTEXT_ON_EXCEPTION': None,
'SECRET_KEY': None,
'PERMANENT_SESSION_LIFETIME': timedelta(days=31),
'USE_X_SENDFILE': False,
'LOGGER_NAME': None,
'LOGGER_HANDLER_POLICY': 'always',
'SERVER_NAME': None,
'APPLICATION_ROOT': None,
'SESSION_COOKIE_NAME': 'session',
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_REFRESH_EACH_REQUEST': True,
'MAX_CONTENT_LENGTH': None,
'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12),
'TRAP_BAD_REQUEST_ERRORS': False,
'TRAP_HTTP_EXCEPTIONS': False,
'EXPLAIN_TEMPLATE_LOADING': False,
'PREFERRED_URL_SCHEME': 'http',
'JSON_AS_ASCII': True,
'JSON_SORT_KEYS': True,
'JSONIFY_PRETTYPRINT_REGULAR': True,
'JSONIFY_MIMETYPE': 'application/json',
'TEMPLATES_AUTO_RELOAD': None,
}
配置方法:
(1) 直接在文件中 寫 app.config['xxx'] = 'xxx'
app.config['DEBUG'] = True
PS: 由於Config對象本質上是字典,所以還可以使用app.config.update(...)
注意:
某個對象 可以進行 a['aa'] = 111的操作的時候,
說明 (1) 重寫了 __setitem__ 方法
(2) 繼承了 dict
(2) 通過 config對象 的 from_pyfile方法:
.. 新建一個 settings.py 的文件(統一管理) : 里面直接 配置 XXX = 1111
.. app.config.from_pyfile('settings.py')
(3) 通過 config 對象的 from_environ 方法 (與上一個類似)
import os
os.environ('xxxx') = 'settings.py'
app.config.from_environ('xxxx')
(4) 通過 config 對象的 from_object 方法 (導入文件中的一個類,不同的環境用不同的配置文件)
推薦使用
app.config.from_object('settings.DevConfig') # 開發的配置
app.config.from_object('settings.TestConfig') # 測試的配置
app.config.from_object('settings.ProConfig') # 正式的配置
settings.py :
class BaseConfig(object):
xxx = 111 # 公用的配置
class TestConfig(BaseConfig):
DB = '127.0.0.1'
class DevConfig(BaseConfig):
DB = 'xx.x.0x.1'
class ProConfig(BaseConfig):
DB = 'xx.0x.0.1'
使用,獲取 配置的時候:
from flask import current_app # 可以獲取當前的 app
c = current_app.config.get('xxx')