一个帮助类,用于优雅地处理打包应用程序的配置默认值。

django-appconf的Python项目详细描述


Code CoverageBuild Status

用于处理打包django的配置默认值的helper类 应用程序优雅。

注意

此应用程序位于django自己的AppConfig类之前,这些类充当 django中的“objects[to]store metadata for a application” 应用程序加载机制。换句话说,他们解决了 与django appconf不同的用例,不易使用 作为替代品。名字上的相似纯属巧合。

概述

假设您有一个名为myapp的应用程序,它有一些默认值,您需要 在应用程序代码中引用,而不必一直重复。 appconf提供了一个简单的类来实现这些默认值。简单地添加 类似于应用程序文件中的以下代码:

fromappconfimportAppConfclassMyAppConf(AppConf):SETTING_1="one"SETTING_2=("two",)

注意

AppConf类依赖于在django启动期间导入 过程。即使有多个模块自动加载, 只有models模块(通常是 app)保证在启动时加载。因此建议 把你的AppConf子类也放在那里。

设置是用大写的app标签初始化的,其中 设置位于。例如,如果您的models.py使用AppConf类 在myapp包中,设置的前缀将是MYAPP

可以通过指定的prefix属性覆盖默认前缀 内部Meta类:

fromappconfimportAppConfclassAcmeAppConf(AppConf):SETTING_1="one"SETTING_2=("two",)classMeta:prefix='acme'

MyAppConf类将自动查看django的全局设置 以确定是否覆盖了它。例如,将此添加到站点的 settings.py将覆盖上述MyAppConf

ACME_SETTING_1="uno"

如果要使用其他设置对象而不是默认设置对象 'django.conf.settings',设置内部的holder属性 Meta类到点式导入路径:

fromappconfimportAppConfclassMyAppConf(AppConf):SETTING_1="one"SETTING_2=("two",)classMeta:prefix='acme'holder='acme.conf.settings'

如果您在可重用的django应用程序中附带了一个AppConf类,那么 建议将其放入应用程序包的conf.py文件中,然后 在其中导入django.conf.settings

fromdjango.confimportsettingsfromappconfimportAppConfclassMyAppConf(AppConf):SETTING_1="one"SETTING_2=("two",)

在应用程序的其他文件中,您可以轻松确保设置 如果从中导入django的settings对象,则正确加载 模块,例如,在应用程序的views.py

fromdjango.httpimportHttpResponsefrommyapp.confimportsettingsdefindex(request):text='Setting 1 is: %s'%settings.MYAPP_SETTING_1returnHttpResponse(text)

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

推荐PyPI第三方库


热门话题
GridLayout不工作的java问题   java Restlet请求对象不包含身份验证信息   java使用Cucumber为每个正在运行的线程创建一个TestNG runner类   java在平面文件中存储并跟踪它们?   类Lcom/google/firebase/FirebaseApp中没有虚拟方法zzbzo()Z;或者它的超类   java如何在安卓中创建字符串模式   可从Java访问的树莓PI传感器   java 50+GB分隔文件中的大致行数   是否有Java进程内数据库,允许从多表虚拟机访问?   当我使用ArrayList时,HashMap中的Java ArrayList会导致HashMap中的数据被删除。去除   如何将值存储在最佳java集合结构中   java消息Servlet。servlet appServlet的init()引发异常   java正在使用Spring引导生成空日志文件   c#在访问实例变量时使用this关键字是否更有效?   java JScrollPane滚动到最后添加的行   java Vertx抛出IllegalStateException:响应已被写入   java Liferay以编程方式更改portlet列   java下载单个s3对象并将它们合并到单个文件中   java spark数据帧将JSON转换为ORC满足“列模糊异常”