Django的另一个应用设置

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


另一个应用程序设置-管理可重复使用的应用程序的设置

https://travis-ci.org/radiac/django-yaa-settings.svg?branch=masterhttps://coveralls.io/repos/github/radiac/django-yaa-settings/badge.svg?branch=master

功能

  • 易于安装和使用
  • 使用前提供默认值并验证用户设置
  • 在测试中使用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:初次发布

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

推荐PyPI第三方库


热门话题
Java:数组大小的插入排序问题   javahibernate抛出com。mysql。jdbc。例外情况。jdbc4。MySQLSyntaxErrorException:查看手册,了解在“localTime”时间附近使用的正确语法   java Hibernate:org。冬眠UnUniqueObjectException:具有相同标识符值的不同对象已与会话关联   Gson无法用java解析我的json日期   JavaMaven使用JDK7为JVM5编译   java(播放2.1.3)@选择返回(字符串,字符串)对   java将画布拉伸到JFrame大小   来自JTextPane的java计算输入   java如何在使用Jenkins构建不稳定的情况下回滚Tomcat?   java是否可以获取包含类(CDI)的引用?   java“IllegalArgumentException:UNMAPPABLE[1]”,同时压缩带有希腊字符的文件   使用jtwitter和SignpostClient的java永久twitter oauth   java我需要对invokeAll调用的结果进行同步吗?   java Hibernate与jointable的关系   java Selenium断言搜索结果总计与正文中的实际结果   Java接口中的JLS8类只能位于最上面的类中   如果保证在收集时调用finalize(),java年轻一代仍然可以获得速度优势?   java集成OAuth帐户和本地帐户   java如何使用Jackson在对象中包含原始JSON?