Django-settings可插拔实现

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

总结

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

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

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

时间: 2024-10-09 11:04:27

Django-settings可插拔实现的相关文章

Android_ UEventObserver_监听USB插拔

本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/38950363 1.简介 最近做一个项目,主要通过usb完成pc与Android端的数据传输.但是根据api提供的无法监听usb的插拔,有解释为不同版本会存在BUG.本打算放弃跳过监听usb,改为在连上usb后pc点击按钮发出一个广播来主动打开Android端的应用程序,然后通过socket完成数据交互.这里主要通过UEventObserver,而该类位于/frame

我心中的核心组件(可插拔的AOP)~大话开篇及目录

我心中的核心组件(可插拔的AOP)~大话开篇及目录 http://www.cnblogs.com/lori/p/3247905.html 回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等. 对于以上内容可以说即是一个大餐,又是一个挑战,就让我带着大家去迎接这份挑战吧,呵呵! 可插拔的AOP AOP即面向切面的编程,是指将一个公用的与领域无

C#.NET U盘插拔监控

[1]涉及的知识点 1) windows消息处理函数 ? 1 protected override void WndProc(ref Message m) 捕获Message的系统硬件改变发出的系统消息 2) 硬件信息类 ? 1 DriveInfo [2]核心函数 消息常量: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /// <summary> /// windows消息常量 /// </summary> class CWn

MFC检测串口插拔

以对话框工程为例 头文件中 afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData); cpp中 ON_WM_DEVICECHANGE() 然后实现函数 BOOL CXXDlg::OnDeviceChange(UINT nEventType,DWORD dwData) { //0x4d36e978L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 //DEV

玩转Oracle之12c 可插拔数据库数据泵功能体验

:数据泵可以高效备份.复制.保护和传输大量的数据和源数据.在导入和导出过程中可以做到过滤数据和对象,并且能够在全数据库级.方案级.表级和表空间级实现导入导出. Oracle12c的datapump功能跟以前差不多,在多租户的环境中执行导入\导出以及使用一些更细化的参数的时候,几乎没有区别,依然很好用,效率很高.目前有很多的用户仍然在使用exp/imp工具在执行一些迁移.备份.过滤和转移数据的工作,相比起来,数据泵的效率更高.更易用并且更方便管理,但exp/imp在有些时候可以完成datapump

USB-Blaster的插拔顺序

前几天发现我的fpga的板子的jtag口不慎烧坏了,万分悲痛,先实验室大神级的师兄请教了一下,他让我看个文档,原来发现自己经常对插拔顺序很不规范,很有可能就是因为这个原因二导致的.以下是建议的插拔顺序,觉得有点道理,贴出来和大家分享一下. 推荐插拔顺序 插线顺序 1. 关闭FPGA开发板的电源: 2. 将JTAG仿真器的JTAG线缆连接至FPGA开发板的JTAG接口: 3. 在仿真器的USB接口上插入USB线缆(假设USB线缆的另一段已经插在电脑上): 4. 打开FPGA开发板的电源. 步骤2和

oracle12c新特点——可插拔数据库(Pluggable Database,PDB)

1.    12c PDB新特点的优势 1)    可以把多个PDB集成进一个平台. 2)    可以快速提供一个新的PDB或一个已有PDB的克隆. 3)    通过拔插技术,可以快速把存在的数据库重新部署到一个新平台上. 4)    多个PDB数据库补丁或升级一次完成. 5)    通过把单个PDB拔插到较高版本的不同CDB,可以补丁或升级一个PDB. 6)    从同一个CDB中众多PDB中分离出某个PDB的内容. 7)    分离这些PDB应用管理员的责任. 2.    12c PDB新特

网络游戏中应用可插拔工厂处理消息

嫌翻得不好的去看后面的原文吧 ———————————————————————————————————————————————————————————— 问题 今天的网络多人游戏必须处理大量不同的消息.有标准的消息(创建玩家.删除玩家.聊天等等),也有游戏中特定的消息.所有这些消息都有它们自己的数据项,它们必须能够通过一个连接发送出去并在另一端重新组装.作为网络游戏开发者,你的工作就是梳理一切以便你的游戏能够以一种优雅的方式发送和接收消息. 在C++中最明显的做到这一点方式就是用类来表示不同的消息

Django settings — Django 1.6 documentation

Django settings - Django 1.6 documentation export DJANGO_SETTINGS_MODULE=mysite.settings django-admin.py runserver Example (Windows shell): set DJANGO_SETTINGS_MODULE=mysite.settings django-admin.py runserver Use the --settings command-line argument