Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

django-settings

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.

API

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
django_settings.get('post_limit')

# 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', 'admin@admin.com')

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

# checking if value exists
django_settings.exists('admin_email')

Installation & setup

  1. Install it using pip:

$> pip install django-settings
  1. Add “django_settings” to your INSTALLED_APPS

INSTALLED_APPS = (
    'django.contrib.contenttypes',  # contenttypes framework is required

    # ...

    'django_settings',

    # ...
)
  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>/models.py
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
django_settings.register(Text)

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 settings.py file. Those settings will be setup ONLY if they not already exists in db.

DJANGO_SETTINGS = {
   'application_limit': ('Integer', 2),
   'admin_email': ('String', 'admin@mail.com'),
}

Settings types

Builidin settings types: Email, Integer, String, PositiveInteger

Admin

You can manipulate setting via your admin interface.

Changelog

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).

Author

Contributors

Metadata

Release files for django-settings 1.3-3-beta

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-settings 1.3-3-beta
File Size Uploaded Provenance Actions
django-settings-1.3-3-beta.tar.gz 9.5 kB Without provenance Details for django-settings-1.3-3-beta.tar.gz

Release files / django-settings-1.3-3-beta.tar.gz

Download URL django-settings-1.3-3-beta.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
cb6201c253f8781487ea1c81db19d18ff2f0cc285629f5cc9c529ddc2f32a7ee
BLAKE2b-256 checksum
How to use checksums
a0c691346c9ddcb4dc944da299c484336a477e8428e4717281c8211e50dc7c1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for django-settings 1.3-3-beta

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page