Flask源码之:配置加载
加载配置文件的思路:
1. 读取配置文件中的所有键值对,并将键值对全都放到Config对象。(Config是一个字典,因为它继承了Dict)
2. 把包含所有配置文件的Config对象,赋值给 app.config,然后可以用app.config去调用配置。
看源码:
项目启动: from flask import Flask app = Flask(__name__,static_url_path='/xx') # app.config = Config对象 # Config对象.from_object('xx.xx') # app.config app.config.from_object('xx.xx') @app.route('/index') def index(): return 'hello world' if __name__ == '__main__': app.run()
app.config.from_object('xx.xx')用来加载xx.xx配置文件中的配置
鼠标左键+ctrl点击config看源码,再点make_config
点config_class
所以make_config中return返回的是Config的一个实例化对象
Config进去,发现Config继承了dict,所以Config的对象就是个字典.
所以最终self.config得到的就是个字典.
你再回去点from_object
if isinstance(obj, string_types):就是判断你from_object()中括号内是不是个字符串,如果是字符串.
继续点 import_string进去
obj = import_string(obj),其实就是对括号内的字符串进行拆分,把.之前的路径取出来,引入这个文件目录,再把文件名引入进来去调用里面的各个配置(类似于importlib模块)
再回到from_object函数中,最后self[key] = getattr(obj, key),将所有配置以字典形式存储,键为大写字母.值为键在配置文件中所对应的内容.
这样就读取到了配置文件的内容到内存中,放到了app.config的字典中了.