zoukankan      html  css  js  c++  java
  • 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的字典中了.

  • 相关阅读:
    mysql重置id
    mysql数据类型
    手把手教你新建一个Vue项目
    用markdown开始优雅的写作
    源码阅读心得
    断点调试-程序员的必修课
    代码还是短点好!
    GoJS v1.8.27 去水印方法
    VS code不用集成终端如何修改并推送分支?
    LeetCode日拱一卒
  • 原文地址:https://www.cnblogs.com/shengjunqiye/p/11924581.html
Copyright © 2011-2022 走看看