Django的另一个应用设置
django-yaa-settings的Python项目详细描述
另一个应用程序设置-管理可重复使用的应用程序的设置
- 项目地点:http://radiac.net/projects/django-yaa-settings/
- 源代码:https://github.com/radiac/django-yaa-settings
功能
- 易于安装和使用
- 使用前提供默认值并验证用户设置
- 在测试中使用django的设置覆盖
版本1.0.0;支持Python2.7和3.4以上版本的Django1.8、1.11和2.0。
安装
从PIP安装:
pip install django-yaa-settings
用法
在应用程序中,创建本地app_settings.py:
from yaa_settings import AppSettings class MySettings(AppSettings): prefix = 'MYAPP' # Can be overridden in Django settings as MYAPP_ATTRIBUTE ATTRIBUTE = 'a static value defined at class creation' @property def PROPERTY(self): """ Return a value calculated whenever it is accessed Can be overridden in Django settings as MYAPP_PROPERTY """ return 'a value calculated when accessed' def CALLABLE(self, value): """ Always called, passed the MYAPP_CALLABLE value from Django settings (or passed None if that is not defined) """ if value is None: raise ValueError('MYAPP_CALLABLE must be configured') return value
- 导入并子类AppSettings
- 每个文件只定义一个AppSettings子类
- 如果要在中为设置提供前缀,请设置prefix属性 Django的设置。
- 设置应为大写,以便与主django设置保持一致。
现在您可以直接在类上访问应用程序的设置,而无需 前缀:
from . import app_settings def some_method(request): if app_settings.ATTRIBUTE == 1: return app_settings.PROPERTY return app_settings.CALLABLE
您可以使用 前缀:
MYAPP_ATTRIBUTE = 'value available as app_settings.ATTRIBUTE' MYAPP_PROPERTY = 'value available as app_settings.PROPERTY' MYAPP_CALLABLE = 'value passed to MySettings.CALLABLE'
为什么?
使用prefix命名设置
根据应用程序的名称将设置命名为 避免与其他应用程序冲突。通过使用prefix属性,您可以 在应用程序中省略前缀,使代码更整洁。
前缀是可选的,如果需要,可以手动命名设置的命名空间 希望在整个项目中使用相同的完整设置。
保留测试支持时的命名空间设置
使用prefix可以模拟一些 项目:
from django.conf import settings SETTING = getattr(settings, 'MYAPP_SETTINGS', 'default')
但与简单的模式不同,yaa设置仍然适用于标准设置 测试重写-请参阅 Django documentation 更多细节。
使用属性创建动态默认值
您的AppSettings子类上的属性将在每次您 访问它,除非在django的设置中重写它。这样你就可以 在运行时生成动态默认值。
使用方法验证或标准化设置
每次访问AppSettings子类时,都将调用该子类上的方法 它,并将传递您在django的设置中定义的值。这个 允许您验证设置,或处理它们以备使用。
更改日志
- 1.0.02018-06-24:稳定发布
- 0.1.02018-06-24:初次发布