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,
- }
方式一:
app.config['DEBUG'] = True
PS: 由于 Config 对象本质上是字典, 所以还可以使用 app.config.update(...)
方式二:
app.config.from_pyfile("python 文件名称")
如:
- settings.py
- DEBUG = True
- app.config.from_pyfile("settings.py")
- app.config.from_envvar("环境变量名称")
环境变量的值为 python 文件名称名称, 内部调用 from_pyfile 方法
app.config.from_json("json 文件名称")
JSON 文件名称, 必须是 json 格式, 因为内部会执行 json.loads
app.config.from_mapping({'DEBUG':True})
字典格式
- app.config.from_object("python 类或类的路径")
- app.config.from_object('pro_flask.settings.TestingConfig')
- settings.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
PS: 从 sys.path 中已经存在路径开始写
PS: settings.py 文件默认路径要放在程序 root_path 目录, 如果 instance_relative_config 为 True, 则就是 instance_path 目录
练习
- s1.py
- from flask import Flask
- app = Flask(__name__)
- # 配置文件
- app.config.from_object("settings.DevelopmentConfig")
- @app.route('/index')
- def index():
- return ""if __name__ =='__main__':
- app.run()
- settings.py
- class BaseConfig(object):
- DEBUG = True
- SECRET_KEY = "asudflkjdfadjfakdf"
- class ProductionConfig(BaseConfig):
- DEBUG = False
- class DevelopmentConfig(BaseConfig):
- pass
- class TestingConfig(BaseConfig):
- pass
来源: http://www.bubuko.com/infodetail-2582140.html