Skip to main content

Simple django reusable application for storing project settings in database.

Project description

Current version: 1.3-3 beta

Django reusable application for storing global project settings in database.

By project settings I mean things like admin mail, some default values like default_post_limit etc. Values are validated depending their type. Begining with ver 1.3 you can register your own settings values.


IMPORTANT: changed in version 1.3, old api still works but caching do not work with it.

import django_settings

# getting values
# this will raise django_settings.models.Setting.DoesNotExist
# exception if value not exists
# if value is not in cache it will be cached

# if you not sure value exists you can pass "default" parameter,
# at this point default is NOT cached
django_settings.get('post_limit', default=10)

# set values - cache is updated for "get" and "exists" method
# values are validated using setting_value model clean_fields method
django_settings.set('Email', 'admin_email', '')

# If you want to avoid validation, do this:
django_settings.set('Email', 'admin_email', '', validate=False)

# checking if value exists

Installation & setup

  1. Install it using pip:
$> pip install django-settings
  1. Add “django_settings” to your INSTALLED_APPS
    'django.contrib.contenttypes',  # contenttypes framework is required

    # ...


    # ...
  1. If you want to add your own settings models, please add them in one of your applications models file, and register them with django_settings api:
# <project>/<app>/
from django.db import models

# ... your application models

import django_settings

class Text(django_settings.db.Model):
    value = models.TextField()
    class Meta:
        abstract = True   # it's IMPORTANT - it need to be abstract

Remember to define model as abstract, this is important because of how django treats model classes.

There is ability to setup some defaults via project file. Those settings will be setup ONLY if they not already exists in db.

   'application_limit': ('Integer', 2),
   'admin_email': ('String', ''),

Settings types

Builidin settings types: Email, Integer, String, PositiveInteger


You can manipulate setting via your admin interface.


1.3-2 beta - several bug fixes including cache unicode keys handling, tests added

1.3-1 beta - admin render_change_form fix

1.3 beta - several improvements has been made since ver 1.0

  1. setting name need to be unique now (backward incompatiblity)
  2. from now you can extend settings with your own types using django_settings.register function
  3. new api with caching mechanism introduced
  4. admin interface has been improved, action to clear cache keys only used by the package added

Some tests has been added for core functionality.

Backward incompatible changes

django_settings.models.Setting name need to be unique now, however ver 1.3 still allows it to not to be unique. Just set DJANGO_SETTINGS_UNIQUE_NAMES application setting to False (True is by default).



Project details

Release history Release notifications

History Node


History Node


History Node


History Node


History Node


History Node


History Node


This version
History Node


History Node


History Node


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-settings-1.3-3-beta.tar.gz (9.5 kB) Copy SHA256 hash SHA256 Source None Jul 16, 2013

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