• Django session源码剖析


    """
    1.django其实有两个配置文件
        一个是暴露给用户可以自定义的配置文件
            项目根目录下的settings.py
        一个是项目默认的配置文件
            当用户不做任何配置的时候自动加载默认配置
    2.配置文件变量名必须是大写
    """
    疑问:为什么当用户配置了就使用用户配置的 不配置就是要默认的
    from django.conf import settings
    
    settings = LazySettings()
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day05.settings")
    ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
    class LazySettings(LazyObject):
        def _setup(self, name=None):
            # os.environ看成是一个全局大字典      'day05.settings'
            settings_module = os.environ.get(ENVIRONMENT_VARIABLE)
            self._wrapped = Settings(settings_module)  # Settings('day05.settings')
     
    class Settings(object):
        def __init__(self, settings_module):  # 'day05.settings'
            for setting in dir(global_settings):  # 获取全局配置文件里面所有的变量名
                if setting.isupper():  # 校验是否是纯大写
                    setattr(self, setting, getattr(global_settings, setting))
                    # 给Settings对象添加全局配置文件中所有的配置信息
            
            self.SETTINGS_MODULE = settings_module  # 'day05.settings'
            mod = importlib.import_module(self.SETTINGS_MODULE)
            # from day05 import settings  # 导入暴露给用户的自定义配置文件
            for setting in dir(mod):
                if setting.isupper():
                    setting_value = getattr(mod, setting)
                    setattr(self, setting, setting_value)
  • 相关阅读:
    defineProperty的使用
    js题库全集
    如何将多个文件夹中的文件合并到一个文件夹中
    CYQ.Data V5 MDataTable 专属篇介绍
    读取和写入配置文件内容的方法
    面对代码中过多的if...else的解决方法
    SQL语句--删除掉重复项只保留一条
    获取当前时间
    Stopwatch 类用于计算程序运行时间
    正则表达式手册
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14875438.html
Copyright © 2020-2023  润新知