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()
    
  • 相关阅读:
    foxmail邮箱在代理环境下不能使用解决方法。
    Win7下IE8无法打开https类型的网站解决方法笔记
    重新注册IE组件
    Web开发者的六个代码调试平台
    仿Material UI框架的动画特效
    JS几种数组遍历方式以及性能分析对比
    js 函数提升和变量提升
    彻底掌握this,call,apply
    深入理解requestAnimationFrame
    基于iscroll.js实现下拉刷新和上拉加载特效
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/10239602.html
Copyright © 2011-2022 走看看