Skip to main content

Django live settings with pluggable backends, including Redis.

Project description

Features

  • Easily migrate your static settings to dynamic settings.

  • Admin interface to edit the dynamic settings.

Installation

Install from PyPI:

pip install django-constance

Or install the in-development version using pip:

pip install -e git+git://github.com/aleszoulek/django-constance#egg=django-constance

Configuration

Modify your settings.py. Add 'constance' to your INSTALLED_APPS, and move each key you want to turn dynamic into the CONSTANCE_CONFIG section, like this:

INSTALLED_APPS = (
    ...
    'constance',
)

CONSTANCE_CONFIG = {
    'MY_SETTINGS_KEY': (42, 'the answer to everything'),
}

Here, 42 is the default value for the key MY_SETTINGS_KEY if it is not found in the backend. The other member of the tuple is a help text the admin will show.

See the Backends section how to setup the backend.

Backends

Constance ships with a series of backends that are used to store the configuration values:

  • constance.backends.redisd.RedisBackend (default)

    The is the default backend and has a couple of options:

    • CONSTANCE_REDIS_CONNECTION: a dictionary of parameters to pass to the to Redis client, e.g.:

      CONSTANCE_REDIS_CONNECTION = {
          'host': 'localhost',
          'port': 6379,
          'db': 0,
      }
    • CONSTANCE_REDIS_CONNECTION_CLASS (optional): an dotted import path to a connection to use, e.g.:

      CONSTANCE_REDIS_CONNECTION_CLASS = 'myproject.myapp.mockup.Connection'
    • CONSTANCE_REDIS_PREFIX (optional): the prefix to be used for the key when storing in the Redis database. Defaults to 'constance:'. E.g.:

      CONSTANCE_REDIS_PREFIX = 'constance:myproject:'
  • constance.backends.database.DatabaseBackend

    If you want to use this backend you need to add 'constance.backends.database' to you INSTALLED_APPS setting.

    It also uses django-picklefield to store the values in the database, so you need to install this library, too. E.g.:

    pip install django-picklefield

    The database backend has the ability to automatically cache the config values and clear them when saving. You need to set the following setting to enable this feature:

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

Usage

Constance can be used from your Python code and from your Django templates.

  • Python

    Accessing the config variables is as easy as importing the config object and accessing the variables with attribute lookups:

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

    To access the config object from your template, you can either pass the object to the template context:

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

    Or you can use the included config context processor.:

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

    This will add the config instance to the context of any template rendered with a RequestContext.

    Then, in your template you can refer to the config values just as any other variable, e.g.:

    <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 %}

Editing

Fire up your admin and you should see a new app called Constance with MY_SETTINGS_KEY in the Config pseudo model.

Screenshots

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

The standard edit screen.

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

The virtual application Constance among your regular applications.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-constance-0.2.tar.gz (10.2 kB view details)

Uploaded Source

File details

Details for the file django-constance-0.2.tar.gz.

File metadata

File hashes

Hashes for django-constance-0.2.tar.gz
Algorithm Hash digest
SHA256 30e544347d20f1687aadb0ea8aec1f2f0053ba9cb7257cb198c5813346f59a65
MD5 305f3d2711792e8266d0611b6b84750c
BLAKE2b-256 3b11a922a877842c5a93b173b35ecf64b79d850ed8ec4c3e9404409282d70f3d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page