Django Live设置,带有可插拔的后端,包括Redis。

django-constance-trbs的Python项目详细描述


Build StatusLatest PyPI versionNumber of PyPI downloads

叉子

这是原始Django Constance项目的一个分支,可以在以下位置找到:

https://github.com/comoga/django-constance

叉子的主要原因是django constance pip可以安装在 django 1.4+兼容性修复程序。

希望我们可以将这个fork合并到正式的存储库中 尽快。

它还添加了使用config对象的缓存版本的选项。 如果constance用于经常查找的情况 (每秒多个)最好使用值的缓存版本 它经常被刷新。

功能

  • 轻松地将静态设置迁移到动态设置。
  • 用于编辑动态设置的管理界面。

安装

从pypi安装django constance的后端特定变体:

对于(默认)redis后端:

pip install django-constance[redis]

对于数据库后端:

pip install django-constance[database]

或者-如果您确定依赖关系已经 已安装–您还可以运行:

pip install django-constance-trbs

或者使用pip

安装git开发版本
pip install -e git+git://github.com/trbs/django-constance-trbs#egg=django-constance-trbs

配置

修改settings.py。将'constance'添加到INSTALLED_APPS, 并将要将dynamic转换为^{tt5}的每个键移动到$ 部分,如下:

INSTALLED_APPS = (
    ...
    'constance',
)

CONSTANCE_CONFIG = {
    'MY_SETTINGS_KEY': {
        'default': 42,
        'help_text': 'the answer to everything'
    },
}

这里,42是键MY_SETTINGS_KEY的默认值,如果它是 在后端找不到。帮助文本将显示在管理中。

您可以使用django.utils.datastructures.SortedDictcollections.OrderedDict对于CONSTANCE_CONFIG如果您不想 在管理员中按字母顺序对设置进行排序。

请参阅Backends部分如何设置后端。

后端

康斯坦斯船上有一堆后端,用来存放 配置值。默认情况下,它使用redis后端。重写 默认设置请将CONSTANCE_BACKEND设置设置为适当的 虚线小径。

redis(默认)

CONSTANCE_BACKEND = 'constance.backends.redisd.RedisBackend'

是默认后端,有两个选项:

  • CONSTANCE_REDIS_CONNECTION

    传递给redis客户端的参数字典,例如:

    CONSTANCE_REDIS_CONNECTION = {
        'host': 'localhost',
        'port': 6379,
        'db': 0,
    }
    

    或者,您也可以使用URL来执行相同的操作:

    CONSTANCE_REDIS_CONNECTION = 'redis://username:password@localhost:6379/0'
    
  • CONSTANCE_REDIS_CONNECTION_CLASS

    指向要使用的连接的(可选)点式导入路径,例如:

    CONSTANCE_REDIS_CONNECTION_CLASS = 'myproject.myapp.mockup.Connection'
    
  • CONSTANCE_REDIS_PREFIX

    存储在redis中时用于密钥的(可选)前缀 数据库。默认为'constance:'。例如:

    CONSTANCE_REDIS_PREFIX = 'constance:myproject:'
    

数据库

CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'

如果要使用此后端,还需要添加数据库后端 设置为INSTALLED_APPS,以确保数据模型正确 创建时间:

INSTALLED_APPS = (
    # other apps
    'constance.backends.database',
)

它还使用django-picklefield将值存储在数据库中,因此 你也需要安装这个库。例如:

pip install django-picklefield

或者按照上面后端特定的安装说明进行操作。

数据库后端能够自动缓存配置 值并在保存时清除它们。您需要设置以下设置 要启用此功能:

CONSTANCE_DATABASE_CACHE_BACKEND = 'memcached://127.0.0.1:11211/'

注意

对于不支持 跨进程缓存,因为正确的缓存失效 不能保证。

从django 1.3开始,您可以选择使用 CACHES设置。例如:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
CONSTANCE_DATABASE_CACHE_BACKEND = 'default'

就像redis后端一样,您可以设置在 数据库交互。为了保持向后兼容,它默认为'' (空字符串)。要使用其他功能,请执行以下操作:

CONSTANCE_DATABASE_PREFIX = 'constance:myproject:'

用法

constance可以从python代码和django模板中使用。

  • 巨蟒

    访问配置变量就像导入配置一样简单 对象并通过属性查找访问变量:

    from constance import config
    
    # ...
    
    if config.MY_SETTINGS_KEY == 42:
        answer_the_question()
    
  • Django Templa公司测试结果

    要从模板访问配置对象,可以 将对象传递到模板上下文:

    from django.shortcuts import render
    from constance import config
    
    def myview(request):
        return render(request, 'my_template.html', {'config': config})
    

    或者您可以使用附带的配置上下文处理器。

    TEMPLATE_CONTEXT_PROCESSORS = (
        # ...
        'constance.context_processors.config',
    )
    

    这将把配置实例添加到任何模板的上下文中 用RequestContext呈现。

    然后,在模板中可以引用配置值,就像 任何其他变量,例如:

    <h1>Welcome on {{ config.SITE_NAME }}</h1>
    {% if config.BETA_LAUNCHED %}
        Woohoo! Head over <a href="/sekrit/">here</a> to use the beta.
    {% else %}
        Sadly we haven't launched yet, click <a href="/newsletter/">here</a>
        to signup for our newletter.
    {% endif %}
    

编辑

启动admin后,您应该会看到一个名为^{tt21}的新应用程序$ 使用Config伪模型中的MY_SETTINGS_KEY

默认情况下,仅允许超级用户通过管理员更改设置。 但是如果您想使用管理员的能力来实现自定义 授权检查,请随意设置CONSTANCE_SUPERUSER_ONLY设置 若要False,并授予用户或用户组访问 constance.change_config权限。

屏幕截图

https://github.com/comoga/django-constance/raw/master/docs/screenshot2.png

标准编辑屏幕。

https://github.com/comoga/django-constance/raw/master/docs/screenshot1.png

在常规应用程序中的虚拟应用程序Constance

更改日志

v0.6(2013/04/12)

  • 添加了Python3支持。支持的版本:2.6、2.7、3.2和3.3。 对于python 3.x,需要使用django>;1.5.x。
  • 修复了使用数据库时在管理员中排序的严重问题 后端。谢谢,博克·哈尔斯玛。
  • 切换到django discover runner作为能够运行的测试运行程序 巨蟒3。
  • 修复了在管理界面中引用静态文件的问题 使用django<;1.4时。

V0.5(2013/03/02)

  • 修复了与django 1.5的可交换模型后端的兼容性。

  • 已将数据库后端的key字段转换为使用CharField 唯一性而不是TextField

    对于南方用户,我们为这种变化提供了迁移。首先是你 必须“伪造”我们已添加到此版本的初始迁移:

    django-admin.py migrate database --fake 0001
    

    之后,您可以运行其余的迁移:

    django-admin.py migrate database
    
  • 修复了与django>;1.4中引用静态文件的方式的兼容性 管理员。

  • 增加了通过新的 CONSTANCE_SUPERUSER_ONLY设置。

  • 增加了波兰语翻译。谢谢,贾努斯·哈科特。

  • 允许CONSTANCE_REDIS_CONNECTION作为url而不是dict。

  • 添加了CONSTANCE_DATABASE_PREFIX设置允许设置密钥前缀。

  • 将测试运行程序切换为使用django nose。

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

推荐PyPI第三方库


热门话题
为什么Java中有三种“阻塞”线程状态,而C中只有一种?   JAVA从文本文件中找到几个单词或短语并显示出来   java更改日志。Jenkins中的xml文件,无需重新生成代码   java使用扫描器读取“干净”文本文件时,是否有任何解析?   stream从InputStream中获取字节数组,但在Java中没有已知大小?   java一旦布尔值为真,如何关闭JFrame?   java对HashMap中容量计算算法的理解   java 安卓句柄选择器状态   Java Swing编程面板标题   java我希望在启动或启动安卓 mobile时显示消息或通知。   java在一个应用程序中支持多个JFrame   java如何使用SeleniumWebDriver选择网页上的两个元素之一?   java Tomcat部署问题   java意图传递数据未成功   安卓在java中将映射定义为常量   java最佳实践Swing、数据库访问   java com。反恐委员会。wstx。exc.WstxIOException:尝试在封闭流上读取   if语句如何检查java中是否存在表达式中的下一个或最后一个值