Flask配置文件
Flask 因为是一种轻量级的web框架,所以他的配置,没有在一个文件中,而是封装了一个类,
同样,Flask 对于封装的概念运用的很棒,如果可以读懂Flask的执行流程,我想对 面向对象的理解应该可以在进一步。
配置
Flask的初始配置封装在类里面。
可以通过实例化Flask后,点default_config字段来查看,当然,这个的前提是你使用的是pycharm。
default_config = ImmutableDict({ 'ENV': None, 'DEBUG': None, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, })
可以看到,他是一个不可变的字典。
在Flask源码中,app.config 被封装了一个 Config类进去,所以,如果想要修改配置文件中的东西的话, 可以依照修改类中的静态字段的操作来修改。
例如将'DEBUG'改为Ture
from flask import Flask app = Flask(__name__) app.config["DEBUG"] = True @app.route("/index") def index(): return "index" if __name__ == "__main__": app.run()
自定义配置文件
Flask中的 config中还封装了一个方法 from_object(文件名)
这个方法,可以在参数中传入一个某个模块下的类,
在源码中,利用了 import_string 的模块去导入 传入函数中的类的所有的静态字段。
示例:
""" 目录结构: |- mystile |- app.py |- settings.py |- templates """ - app.py from flask import Flask app = Flask(__name__) app.config.from_object("settings.DevelopmentConfig") @app.route('/index') def index(): print('index') return "index" if __name__ == '__main__': app.run() - settings.py class DevelopmentConfig(Config): DEBUG = True """ 这里面继续写,需要改的配置文件的 变量 """