Skip to main content

DjConfig is a Django app for storing other apps configurations.

Project description

How it works

DjConfig let you provide all the configuration variables you need by using a regular form.

Those variables are persisted in the database (one per row) and stored in the selected cache backend for later access.

Requirements

DjConfig requires the following software to be installed:

  • Python 2.7
  • Django +1.5 (tested locally on 1.6)

Configuration

  1. Add djconfig to your INSTALLED_APPS
  2. Run python manage.py syncdb
  3. (Optional) Add djconfig.middleware.DjConfigLocMemMiddleware to your MIDDLEWARE_CLASSES if you are using django LocMemCache and running multiple processes
  4. (Optional) Add djconfig.context_processors.config to your TEMPLATE_CONTEXT_PROCESSORS for accessing config within your templates

Usage

Setting your config variables:

from djconfig.forms import ConfigForm


class AppConfigForm(ConfigForm):

    my_first_key = forms.BooleanField(initial=True, required=False)
    my_second_key = forms.IntegerField(initial=20)

Registering your form:

*urls.py*

import djconfig

...

djconfig.register(AppConfigForm)

Accessing your config variables:

from djconfig import config


if config.my_first_key:
    ...

Accessing your config variables within your templates: Requires setting ``djconfig.context_processors.config`` or passing the ``config`` object to your RequestContext manually

*template.html*

...

{% if config.my_first_key %}
    ...
{% endif %}

Dynamically setting your config variables:

def config_view(request):
    if not request.user.is_superuser:
        raise Http404

    if request.method == 'POST':
        form = AppConfigForm(data=request.POST)

        if form.is_valid():
            form.save()
            return redirect('/')
    else:
        form = AppConfigForm()

    return render(request, 'app/configuration.html', {'form': form, })

Backends

DjConfig requires a Django cache backend to be installed.

*settings.py*

...

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

To use other backend than the default, add DJC_BACKEND = 'other' in your settings.py file.

Supported backends: * LocMemCache * Memcached * Redis (requires django-redis-cache) * Any other memory-based cache.

Note: When using LocMemCache you must add djconfig.middleware.DjConfigLocMemMiddleware to your MIDDLEWARE_CLASSES.

This will make cross-process caching possible. Not really, but it will reload the cache on every request by quering the database.

Supported form fields

The following form fields were tested: BooleanField, CharField, EmailField, FloatField, IntegerField, URLField.

Fields that return complex objects are not supported. Basically any object that can be store in a data base is supported, except for DateField which is not supported at this time (sorry).

There is an easy way to solve this, by saving the raw user input, but that’s probably not secure.

Contributing

Feel free to check out the source code and submit pull requests.

You may also report any bug or propose new features in the issues tracker

Project details


Release history Release notifications

History Node

0.6.0

History Node

0.5.3

History Node

0.5.2

History Node

0.5.1

History Node

0.5.0

History Node

0.4.0

History Node

0.3.2

History Node

0.3.1.1

History Node

0.3.1

History Node

0.3.0

History Node

0.2.0

History Node

0.1.8

History Node

0.1.7

History Node

0.1.6

History Node

0.1.5

This version
History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
django-djconfig-0.1.4.tar.gz (7.7 kB) Copy SHA256 hash SHA256 Source None Apr 30, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page