码迷,mamicode.com
首页 > 其他好文 > 详细

Django-settings可插拔实现

时间:2019-10-24 23:15:47      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:__init__   优先   判断   dir   out   启动文件   rtl   添加   大写   

Setting可插拔

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

文件目录

--about_settings
  --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()

总结

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

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

Django-settings可插拔实现

标签:__init__   优先   判断   dir   out   启动文件   rtl   添加   大写   

原文地址:https://www.cnblogs.com/zx125/p/11735505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!