Django Live设置,带有可插拔的后端,包括Redis。
django-constance-trbs的Python项目详细描述
叉子
这是原始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.SortedDict或 collections.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权限。
屏幕截图
标准编辑屏幕。
在常规应用程序中的虚拟应用程序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。