一个帮助类,用于优雅地处理打包应用程序的配置默认值。
django-appconf的Python项目详细描述
用于处理打包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)