settings源码

 

 

自定义settings配置

创建python项目

settings.py

NAME = '我是暴露给用户的自定义配置’

  

__init__.py

import os
import importlib
 
from lib.conf import global_settings
 
 
class Settings(object):
    def __init__(self):
        #先for循环获取全局配置文件中所有 的变量名
        for name in dir(global_settings):
            #判断是否是大写
            if name.isupper():
                setattr(self,name,getattr(global_settings,name))
        #从全局的大字典中先拿到暴露给用户的配置文件,字符串路径
        path = os.environ.get('xxx') #path = 'conf.settings'
        #利用importlib模块导入settings模块
        module = importlib.import_module(path)
        '''
         
        from conf import settings
        module就是settings模块名
        '''
 
        #再for循环暴露给用户的文件中所有的变量名
        for name in dir(module):
            if name.isupper():
                k = name
                v = getattr(module,name)
                setattr(self,k,v)
 
settings = Settings()

  

global_settings.py

NAME = '我是项目默认的配置'

 

start.py

import os
import sys
 
BASE_DIR = os.path.dirname(__file__)
sys.path.append(BASE_DIR)
 
 
 
if __name__ == '__main__':

    #在项目的全局设置一个大字典
    os.environ.setdefault('xxx','conf.settings')
 
 
    from lib.conf import settings
    print(settings.NAME)

 

  

  

posted @ 2019-10-14 19:34  小肥海  阅读(234)  评论(0编辑  收藏  举报