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的字典中了.

 

posted @ 2019-11-24 21:48  圣君灬七夜  阅读(193)  评论(0编辑  收藏  举报