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。
此包试图解决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。