Skip to main content

Dynamic site settings for Django with caching

Project description

Django Site Settings

PyPI version Python Versions Django Versions License: MIT

Django Site Settings is a reusable Django application designed to manage dynamic, type-safe global configurations directly from the Django Admin panel. Built on top of django-solo, it guarantees a singleton pattern for your core settings while offering an advanced, customizable caching layer.


Features

  • Singleton Architecture: Ensures only one global configuration instance exists.
  • Strict Type Validation: Supports String, Integer, Float, and Boolean data types with strict validation on save.
  • High-Performance Caching: Automatically caches values to minimize database hits.
  • Multi-Cache Support: Seamlessly integrates with your existing cache infrastructure (Redis, Memcached, etc.).
  • Smart Cache Invalidation: Uses Django signals to instantly purge modified or deleted keys.
  • Template Tag Ready: Built-in template tags to fetch settings directly inside your HTML layouts.

Requirements

  • Python: 3.10, 3.11, 3.12+
  • Django: 5.0, 6.0+
  • django-solo: 2.3.0+

Installation

Via pip

pip install django-site-settings

Via Poetry

To add the package as a dependency using Poetry, run the following command:

poetry add django-site-settings

Configuration

  1. Add solo and django_site_settings to your project's INSTALLED_APPS inside settings.py:
INSTALLED_APPS = [
    # ... Django core apps
    
    "solo",
    "django_site_settings",
    
    # ... Your local apps
]
  1. Run the database migrations:
python manage.py migrate

Advanced Customization (Optional)

You can customize the caching behavior by adding the following variables to your main Django settings.py:

# Cache TTL in seconds (Default is 7 days)
SITE_SETTINGS_CACHE_TIMEOUT = 86400  # 24 hours

# Specify which cache backend configuration from your CACHES setting to use (Default is "default")
SITE_SETTINGS_CACHE_ALIAS = "fast_redis"

Usage

Fetching Settings in Python Code

Use the get_setting utility function anywhere in your Python business logic (services, models, tasks, or utilities) with automatic type conversion:

from django_site_settings.utils import get_setting

# Safely pulls from cache with strict type conversion
max_attempts = get_setting("MAX_LOGIN_ATTEMPTS", default=3)
is_maintenance = get_setting("MAINTENANCE_MODE", default=False)
api_timeout = get_setting("EXTERNAL_API_TIMEOUT", default=5.0)

if is_maintenance:
    # Handle maintenance logic directly
    pass

Fetching Settings inside Django Templates

Load the custom template tags to output values natively inside your HTML files:

{% load site_settings_tags %}

<footer>
    <p>Contact Support: {% site_setting "SUPPORT_EMAIL" default="support@example.com" %}</p>
    
    {% site_setting "SHOW_PROMO_BANNER" default=False as show_banner %}
    {% if show_banner %}
        <div class="banner">Big sale active!</div>
    {% endif %}
</footer>

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_site_settings-0.1.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_site_settings-0.1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file django_site_settings-0.1.0.tar.gz.

File metadata

  • Download URL: django_site_settings-0.1.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_site_settings-0.1.0.tar.gz
Algorithm Hash digest
SHA256 08bc5e3bff4fa1c1d8f1b6d917374e4e7c814570ec52717d4472207ce6bba568
MD5 0b62fb71e05a03fa2336b92ab719ec0d
BLAKE2b-256 8ef367150235f6b7f5b7266a1ad5995b9a6e49ddeec09d5b8a358dc57435bc4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_site_settings-0.1.0.tar.gz:

Publisher: python-publish.yml on G4braG4br/django-site-settings

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_site_settings-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_site_settings-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 267c9bccf66c4f4ee971aaa7a18591ceab585148db2568bc06b50eec81561e98
MD5 9097d652a53b9d472caf33bd0256a480
BLAKE2b-256 01e0c4048d78d88b1bb78f1418e5ad5d5969091df37a0dbddd1a6fd293b4b47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_site_settings-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on G4braG4br/django-site-settings

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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