zoukankan      html  css  js  c++  java
  • 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()
    

    总结

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

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

  • 相关阅读:
    rtmp 之 amf
    Codeforces Round #601 (Div. 1)
    Codeforces Round #618 (Div. 1)
    Codeforces Round #694 (Div. 1) BCDE
    AtCoder Regular Contest 106 DEF
    AtCoder Grand Contest 006 BCDEFF
    JavaScript中深拷贝的实现方法
    suiidfadf
    macOs打开时提示:xxx.app已损坏修复教程
    vue通过事件对象获取标签上的属性值
  • 原文地址:https://www.cnblogs.com/zx125/p/11735505.html
Copyright © 2011-2022 走看看