django项目中的本地设置处理系统

django-local-settings的Python项目详细描述


#django项目的本地设置

此包试图解决django项目中处理本地设置的问题。本地
定义的设置不能预先定义,尽管它们可能有一个合理的默认值
(主要用于开发)。另一类本地设置是*secret*settings;这些
绝对不应该预先定义,也不应该添加到版本控制中。

本地设置的问题是:

-如何指定哪些设置是本地的
-如何通知其他人哪些设置是本地的(或机密的)
-如何实际提供本地设置值
-如何验证本地设置是否已被赋予有效值
-如何确保新的本地设置被设置
-如何确保本地(尤其是机密)设置不会添加到版本控制中

虚拟/默认值。当
新开发人员开始处理项目时,他们会复制此文件(例如,"local_settings.py.template
=>;local_settings.py"),该文件通常不在版本控制中。这种方法至少可以识别哪些设置是本地的,但是对于设置值和确保这些值有效来说,它不是很方便。此外,当您忘记设置本地设置时,它不会友好地提醒您,而是会弹出一个异常。


此软件包采用的方法是,在
标准位置:`{project}.settings`中,每个项目只有一个设置*模块*。该模块在
中定义/重写django的基本设置,通常使用*加*的方式定义哪些设置是本地的,哪些是机密的。

除了设置模块之外,还将有一个或多个设置*文件*。这些是标准的
ini文件,增加了值是json编码的扭曲。这背后的原因是
使用简单的标准配置文件格式,同时仍然允许轻松处理非字符串
设置。

todo:可能添加对不同配置文件格式(例如yaml)的支持?

一旦定义了本地设置,*任何丢失的设置都将在控制台中提示*
(具有漂亮的颜色和readline支持)。


\features

-丢失的本地设置将被提示(仅当在TTY/控制台上运行时)
-本地设置可以用验证器定义使用文档字符串定义
-本地设置可以嵌套在设置列表和dict中
-设置文件可以相互扩展
-设置值可以使用特殊语法(也称为
插值,类似于标准库的"configparser")
-包含一个脚本,可以轻松地为不同的环境生成本地设置文件
-支持python 2.7-3.7(使用[six](http://pythonhosted.org/six/))
-支持django 1.7-2.0

基本用法

项目的"设置"模块中,导入"加载和检查设置"功能,以及
所需的设置类型:


从本地设置导入加载和检查设置、本地设置、secretsetting

-然后定义一些基本设置和本地设置:

package='顶级包名'
debug=localsetting(默认值=false)
数据库={
'默认值':{
'引擎':'django.db.backends.postgresql',
'名称':localsetting(默认值='{{package}'),
'用户':localsetting('',
"密码":secretsetting(),
"主机":localsetting('',
"端口":'',
},
}
secretsetting secret key=secretsetting(doc='做秘密工作的密钥')

本地设置可以在顶级定义的任何地方定义检查。它们也可以有文档字符串,在提示时显示。

这也演示了插值。"databases.default.name"设置将替换为"package"设置,因此其默认值实际上是"顶级package"。

-定义所有本地设置之后,添加以下行:

u settings=load_and_check_settings(globals())
globals()。update(_settings)

这两行将项目的本地设置合并到设置模块的命名空间中。
传递"globals()"初始化本地设置加载程序使用基本设置(例如,上面的示例中的"package"
)并通过"告诉"它哪些设置是本地设置。

"加载"和"检查"设置()`从文件(`$pwd/local.cfg`按
默认值)加载项目的本地设置,并提示是否缺少任何设置,并返回一个新字典,其中本地设置
合并在任何基本设置上。当不在tty/控制台上运行时,丢失的本地设置将导致引发异常。


`globals().update(_settings)`将所有设置合并到设置模块的命名空间中。
在这一行运行之后,您将能够像使用任何本地设置一样使用本地设置其他设置。
例如,可以执行"if debug:…";此时,"debug"不再是"localsetting"
实例--它是一个常规的旧bool。

注意:只需编写"globals().update(加载和检查设置(globals())"。上面的拼写是为了更清楚地说明发生了什么。

-现在您可以运行任何"manage.py"命令,系统将提示您输入任何缺少的本地设置。第一次运行时,将创建设置文件。在随后的运行中将新的本地
设置添加到"设置"模块时,设置文件将附加到。

-或者,可以运行包含的"生成本地设置"脚本来生成本地设置
文件。

多个设置文件,从另一个文件扩展设置文件,如何指定默认值"local.cfg"以外的设置文件,直接编辑设置文件&c。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridBagLayout集合JScrollPane相对于JButton高度   使用JAXWS的java:如何设置用户代理属性   java使用Jackson将巨大的JSON响应反序列化为POJO最有效的方法是什么?   java如何实现对bouncy ball的声明?   java使用Hibernate显示给定parentNode的所有子节点   javascript模式引导与应用程序Spring引导(JAVA)   机器学习在weka java中有没有计算P值的方法?   mymysql中的java数据不一致   几何学在Java中,对于任何具有起始坐标和结束坐标的直线,如何获得矩形的4个角   java我需要读取一个字符串并从中获取一个特定的值   java短长度身份验证令牌   读取Android NFC IsoDep标记时发生java连接错误   java NoSuchMethodError:将Firebase与应用程序引擎应用程序集成时出错   java如何编写超级工厂程序?   java关联与聚合   java问题集作为学习编程未来、承诺和参与者的资源