• djanosetting源码初识


    在django中settings其实分为两种一种是用户可以进行修改和配置的,一种是不会暴露给用户,当用户对settings进行配置时会使用

    用户配置的,当用户没有配置时,使用settings默认的配置

    当我们生成jango项目时,会在manage.py文件中自定将暴露给用户的settings 加到全局的大字典中

    我们点进settings会发现 生成了一个LazySettings类的单例模式的实例化对象

     

    在LazySettings类中获取全局字典中的用户设置settings,并传给一个sttings类:

    在settings中开始判断用户是否做了settings设置,没有设置就用settings默认的配置,用户配置了就使用用户已经设置好的

    自己模拟jango示例,在测试项目中设置用户setting全局settings:

    在将用户settings加入我们设置的全局的字典中,并且在全局的settings的__init__取出后判断用户是否设置了settings,没有设置就用默认的配置

    import os
    from lib.conf import global_settings
    import importlib
    class setttings(object):
        def __init__(self):
            for name in dir(global_settings):
                if name.isupper():
                    k = name
                    v = getattr(global_settings,name)
                    setattr(self,k,v)
    
            moudel_path = os.environ.get('name')
            moudel = importlib.import_module(moudel_path)
            for name in dir(moudel):
                if name.isupper():
                    k = name
                    v = getattr(moudel,name)
                    setattr(self,k,v)

    示例验证:

    当用户setting设置后打印结果:

    当用户没有设置时的打印结果:

     

  • 相关阅读:
    NTC温度采集之数据拟合——freemat软件实现
    头文件中不能定义变量
    好的博客空间收藏
    STM32F407VET6之IAR之ewarm7.80.4工程建立(基于官方固件库1.6版本) 的工程文件目录
    STM32F407VET6之IAR之ewarm7.80.4工程建立(基于官方固件库1.6版本)
    JAVA反射机制o
    Java反射机制
    c+内存管理机制
    java内存空间详解
    JAVA内存管理再解
  • 原文地址:https://www.cnblogs.com/1624413646hxy/p/11279362.html
Copyright © 2020-2023  润新知