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'] = TruePS: 由于Config對象本質上是字典,所以還可以使用app.config.update(...)方式二:app.config.from_pyfile("python文件名稱")如:settings.pyDEBUG = Trueapp.config.from_pyfile("settings.py")app.config.from_envvar("環境變量名稱")環境變量的值為python文件名稱名稱,內部調用from_pyfile方法app.config.from_json("json文件名稱")JSON文件名稱,必須是json格式,因為內部會執行json.loadsapp.config.from_mapping({'DEBUG':True})字典格式app.config.from_object("python類或類的路徑")app.config.from_object('pro_flask.settings.TestingConfig')settings.pyclass Config(object):DEBUG = FalseTESTING = FalseDATABASE_URI = 'sqlite://:memory:'class ProductionConfig(Config):DATABASE_URI = 'mysql://user@localhost/foo'class DevelopmentConfig(Config):DEBUG = Trueclass TestingConfig(Config):TESTING = TruePS: 從sys.path中已經存在路徑開始寫PS: settings.py文件默認路徑要放在程序root_path目錄,如果instance_relative_config為True,則就是instance_path目錄
?下面這種是主流的配置文件,通過類的方式
?
# -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/4 8:15 # settings.py 文件默認放在根目錄 class Config(object):DEBUG = FalseTESTING = FalseDATABASE_URI = 'sqlite://:memory:'# 產品環境 class ProductionConfig(Config):DATABASE_URI = 'mysql://user@localhost/foo'# 開發環境 class DevelopmentConfig(Config):DEBUG = True # 自動重啟SECRET_KEY = 'abcdd' # 用來安全訪問# 測試環境 class TestingConfig(Config):TESTING = True# flask全部配置 ''' {'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.from_object('settings.DevelopmentConfig')
?