• 模拟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()
    
  • 相关阅读:
    kafka集群搭建
    数据导入 xls --》mysql
    Spark --RDD算子
    Spark集群搭建
    【已解决】 IDEA运行spark程序报错:GC overhead limit exceeded?
    Spring Boot 配置 ---02
    Spring Boot 入门 ---01
    Nginx 推流 拉流 --- 点播直播
    【转】JS内置对象方法
    MapReduce 简单数据统计
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/10239602.html
Copyright © 2020-2023  润新知