标签:key com col init img mamicode height 客户 djang
cmdb客户端文件夹创建
客户端:client:
-bin:启动文件
-src:源文件(核心代码)
-conf:配置文件
-lib:全局的一些方法 和配置
-test:测试文件
??模仿django一个暴露给用户的settings文件,一个全局配置文件global_settings,然后都可以实现通过settings这个对象点出属性方法也就是自定义配置或者全局配置,所以要创两个配置文件??
??实现第一个功能:集成自定制配置文件和全局配置文件??
在start文件中导入lib文件夹中config文件夹中的config中settings对象,然后Setings这个类要进行实例化,实例化的时候就会触发__init__方法,这个函数里面将custom_settings和global_settings里所有的配置key,
value值都设置到settings对象里面,然后就可以对象点的方式获取到值?????
custom_settigns.py (暴露给用户的配置文件)
USER = ‘root‘
global_settings.py (全局的配置文件)
EMAIL_USER = ‘test‘
然后可以先在测试文件test中进行测试一下
s1.py
USER = ‘root‘ port = 23
s2.py
import s1 print(dir(s1)) #变成字典 # [‘USER‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘port‘] print(s1) print(s1.USER) 导入文件也可以点的方式获取到文件中的内容,文件实际上也是个对象,可以通过点的方式来获取值 for key in dir(s1): if key.isupper(): # 我们只要大写的,因为配置文件里面规定大写,小写就排除掉 print(key)
config.py
将custom_settings和global_settings里所有的配置key,
value值都设置到settings对象里面??
from conf import custom_settings from . import global_settings
全局配置要放在自定制配置上面,因为这样才会实现全局和局部同一个配置,先加载用户写的配置 class Settings(): def __init__(self): ### 全局设置 for key in dir(custom_settings): if key.isupper(): v = getattr(global_settings, key) # 获取全局配置文件中配置的值,第一个是对象(导入的文件),第二个key,v就是key对应的值 setattr(self, key,v) # self代表的是当前的对象settings,key就是配置文件的大写的配置,v 就是self.配置的值也就是key对应的值,
所以这样就可以通过settings这个对象点的方式获取到值 ### 自定制配置 for key in dir(custom_settings): if key.isupper(): v = getattr(custom_settings, key) # 第一个是对象,第二个key setattr(self, key,v) # self代表的是当前的对象settings,key就是配置文件的大写的配置,v 就是self.配置的值,所以这样就可以通过settings这个对象点的方式获取到值 settings = Settings()
start.py
start文件中导入config中settings对象??
from lib.config.config import settings if __name__ == ‘__main__‘: pass
标签:key com col init img mamicode height 客户 djang
原文地址:https://www.cnblogs.com/huangxuanya/p/11621819.html