• Django-settings可插拔实现


    Setting可插拔

    django暴露了一个可以给用户自定义配置的文件,优先使用用户配置的信息,而且必须要大写才有效

    文件目录

    --about_settings
      --default
        --conf
          --__init__.py
          --global_settings.py 默认配置文件
      --user
        --settings.py        用户配置文件
      --start.py             启动文件
                启动文件
      
    

    start.py

    import os
    import sys
    
    #将项目的根目录配置到模块搜索路径,提高兼容性
    BASE_DIR = os.path.dirname(__file__)
    sys.path.append(BASE_DIR)
    
    #将用户的配置文件添加到系统环境变量,整个项目运行期间都可以获取
    os.environ.setdefault('settings','user.settings')
    
    #初始化项目配置文件
    from default.conf import settings
    
    #这个时候配置文件已经完成,打印查看信息
    for setting in dir(settings):
        print(setting,getattr(settings,setting))
    
    

    __init__.py

    import os
    import importlib
    from default.conf import global_settings
    
    class Settings():
    	#初始化项目配置信息
        def __init__(self):
        	#遍历默认的配置文件,并将配置信息添加到,配置对象当中
            for setting in dir(global_settings):
            	#判断是否是大写
                if setting.isupper():
                	#通过反射添加值
                    setattr(self,setting,getattr(global_settings,setting))
    		
    		#获取用户的模块字符串
            mod = os.environ.get('settings')
            #importlib可以通过字符串进行导入模块
            module = importlib.import_module(mod)
    		
    		#遍历用户配置文件,并将配置信息添加到对象中,如果重复会覆盖之前系统的配置信息
            for setting in dir(module):
                if setting.isupper():
                    setattr(self, setting, getattr(module, setting))
                    
    settings = Settings()
    

    总结

    关于两个配置文件,可以自己随意些,但是要注意大写

    通过代码我们就可以更好的了解可插拔体现在哪里了,用户的配置文件可以随意更改位置,只要在启动文件,更改它的系统变量就好

  • 相关阅读:
    问题:为命名空间,在此被用作类型和此项目作为引用添加将导致循环依赖项
    关于ObjectDataProvider绑定方法使用案例
    关于C#的数据绑定,存取数据库实例详解 (三)
    关于C#的数据绑定,存取数据库实例详解 (二)
    关于C#的数据绑定,存取数据库实例详解 (一)
    UOS安装到虚拟机上
    连接第三方接口
    工作流
    关于国产项目开发(数据库+服务器+架构)
    字段显示替换
  • 原文地址:https://www.cnblogs.com/zx125/p/11735505.html
Copyright © 2020-2023  润新知