zoukankan      html  css  js  c++  java
  • 模拟Django的settings配置

    模拟Django的settings配置

    Django中的配置除了用户的配置以外,django还有一个默认的配置,当用户的某个配置没有设置时,Django会从默认配置里找

    接下来,我就模拟一下这种配置

    项目格式

    global_setting.py

    # 假设这是默认配置
    DEBUG = None
    
    TIME_ZONE = 'America/Chicago'
    
    USE_TZ = False
    
    

    setting.py

    # 这就是用户配置
    DEBUG = True
    
    TIME_ZONE = 'Asia/Shanghai'
    
    USE_TZ = False
    
    # 比起默认配置多了一个
    ABC='123'
    
    
    

    test.py

    # 相当于启动文件
    import os
    
    # os.environ.setdefault(a,b):以字典的格式放入环境变量中
    # {'USER_SETTING':'usersetting.setting'}
    # usersetting.setting:是用户的配置文件的路径
    os.environ.setdefault('USER_SETTING', 'usersetting.setting')
    
    from conf import setting
    
    print(setting.DEBUG)
    

    init.py

    from conf import global_setting
    import os
    import importlib
    
    
    class MySetting():
    
        # dir:返回模块的属性列表
        def __init__(self):
    		
            # 循环获得global_setting的配置名
            for setting in dir(global_setting):
                if setting.isupper():
                    # 并把配置名和对应值赋给MySetting()的对象
                    setattr(self, setting, getattr(global_setting, setting))
    		
            # 从环境变量中获得用户配置的路径字符串
            settings_module = os.environ.get('USER_SETTING')
            # importlib模块支持传递字符串来导入模块
            # 通过importlib模块和用户配置的路径字符串,我们可以导入用户的配置文件mod
            mod = importlib.import_module(settings_module)
    		
            # 之后的操作和上面一样
            # 用户中已有的配置会覆盖默认配置
            for setting in dir(mod):
                if setting.isupper():
                    setattr(self, setting, getattr(mod, setting))
    
    
    setting = MySetting()
    
  • 相关阅读:
    mybatis-plus
    AOP中Cache操作实现
    ab和webbench的安装以及使用
    git commit的提交规范
    CGI、FastCGI、PHP-CGI与PHP-FPM的概念以及各个之间的关系
    PHP垃圾回收机制(GC)
    PhpStorm中php文件如何在console中运行
    ELK-logstash导入数据以及配合kibana使用
    领扣刷题——关于数
    Uncaught SyntaxError: Illegal return statement
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/10239602.html
Copyright © 2011-2022 走看看