跳转到主要内容

包括Redis在内的可插拔后端,用于Django实时设置。

项目描述

Build Status Latest PyPI version Number of PyPI downloads

分叉

这是原始django-constance项目的分叉,可在以下位置找到

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

分叉的主要原因是为了使django-constance与Django 1.4+兼容性修复可pip安装。

希望我们能够尽快将此分叉合并回官方仓库。

它还添加了使用缓存版本配置对象的功能。如果在非常频繁查找(每秒很多次)的情况下使用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 中,并将您想转换为动态设置的每个键移动到 CONSTANCE_CONFIG 部分,如下所示

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

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

后端

Constance 配备了多个后端,用于存储配置值。默认情况下,它使用 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 模板中调用。

  • Python

    访问配置变量就像导入配置对象并使用属性查找访问变量一样简单。

    from constance import config
    
    # ...
    
    if config.MY_SETTINGS_KEY == 42:
        answer_the_question()
  • Django 模板

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

    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,您应该会看到一个名为 Constance 的新应用程序,其中包含在 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)

  • 添加了对 Python 3 的支持。支持的版本:2.6、2.7、3.2 和 3.3。对于 Python 3.x,需要使用 Django > 1.5.x。

  • 修复了使用数据库后端时在管理员中排序的严重问题。谢谢,Bouke Haarsma。

  • 切换到django-discover-runner作为测试运行器,以便能够在Python 3上运行。

  • 修复了在使用Django < 1.4时在管理员界面中引用静态文件的问题。

v0.5 (2013/03/02)

  • 修复了与Django 1.5的交换模型后端的兼容性问题。

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

    对于South用户,我们提供了相应的迁移。首先,您必须“伪造”我们也添加到这次发布的初始迁移

    django-admin.py migrate database --fake 0001

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

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

  • 添加了通过新的CONSTANCE_SUPERUSER_ONLY设置添加自定义授权检查的功能。

  • 添加了波兰语翻译。谢谢,Janusz Harkot。

  • 允许CONSTANCE_REDIS_CONNECTION是一个URL,而不是一个字典。

  • 添加了允许设置键前缀的CONSTANCE_DATABASE_PREFIX设置。

  • 将测试运行器切换到使用django-nose。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源代码分发

django-constance-trbs-0.7.9.tar.gz (15.7 kB 查看哈希值)

上传时间 源代码

构建分发

django_constance_trbs-0.7.9-py2.py3-none-any.whl (28.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面