flask配置文件

fask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:

  1. default_config = ImmutableDict({
  2. 'DEBUG': get_debug_flag(default=False),
  3. 'TESTING': False,
  4. 'PROPAGATE_EXCEPTIONS': None,
  5. 'PRESERVE_CONTEXT_ON_EXCEPTION': None,
  6. 'SECRET_KEY': None,
  7. 'PERMANENT_SESSION_LIFETIME': timedelta(days=31),
  8. 'USE_X_SENDFILE': False,
  9. 'LOGGER_NAME': None,
  10. 'LOGGER_HANDLER_POLICY': 'always',
  11. 'SERVER_NAME': None,
  12. 'APPLICATION_ROOT': None,
  13. 'SESSION_COOKIE_NAME': 'session',
  14. 'SESSION_COOKIE_DOMAIN': None,
  15. 'SESSION_COOKIE_PATH': None,
  16. 'SESSION_COOKIE_HTTPONLY': True,
  17. 'SESSION_COOKIE_SECURE': False,
  18. 'SESSION_REFRESH_EACH_REQUEST': True,
  19. 'MAX_CONTENT_LENGTH': None,
  20. 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12),
  21. 'TRAP_BAD_REQUEST_ERRORS': False,
  22. 'TRAP_HTTP_EXCEPTIONS': False,
  23. 'EXPLAIN_TEMPLATE_LOADING': False,
  24. 'PREFERRED_URL_SCHEME': 'http',
  25. 'JSON_AS_ASCII': True,
  26. 'JSON_SORT_KEYS': True,
  27. 'JSONIFY_PRETTYPRINT_REGULAR': True,
  28. 'JSONIFY_MIMETYPE': 'application/json',
  29. 'TEMPLATES_AUTO_RELOAD': None,
  30. })

配置文件的实现方式:

方式一:属性

  1. app.secret_key = ['1111111']
  2. app.debug = True
  3. # PS: 由于Config对象本质上是字典,所以还可以使用app.config.update(...)
  4. app.config.update(DEBUG=True)
  5. app.config['SECRET_KEY'] = '11111'

方式二:文件

  1. # app.py
  2. app.config.from_pyfile('settings.py')
  3. # settings.py
  4. SECRET_KEY = '2222'

方式三:环境变量+文件

  1. # app.py
  2. import os
  3. os.environ['xxx'] = 'settings.py'
  4. app.config.from_envvar('xxx')
  5. # settings.py
  6. SECRET_KEY = '2222'

方式四:json文件

  1. # app.py
  2. app.config.from_json("settings.py")
  3. # settings.py(必须是json格式,因为内部会执行json.loads)
  4. {"SECRET_KEY":"21212"}

方式五:字典格式

  1. app.config.from_mapping({'SECRET_KEY':21121})

方式六:配置类(推荐)

  1. # app.py
  2. # 使用时只需要修改配置类
  3. import settings
  4. app.config.from_object(settings.BaseConfig)
  5. # settings.py
  6. class BaseConfig(object):
  7. # 基础配置
  8. NNN = 1
  9. AAA = 0
  10. class TestConfig(BaseConfig):
  11. # 测试环境配置
  12. AAA = 111
  13. class DevConfig(BaseConfig):
  14. # 开发环境配置
  15. AAA = 222
  16. class ProConfig(BaseConfig):
  17. # 线上环境配置
  18. AAA = 333

作者:马小跳_
链接:https://www.jianshu.com/p/6b9a77f1c0cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。