Skip to main content

django-enhanced-settings

Tests codecov PyPI PyPI - Python Version PyPI - Wheel

Allow for more complex and dynamic settings for Django.

Extras

cloud-secret-manager - Adds support for Google Cloud Secret Manager

Example

import os

from django_enhanced_settings import Settings


BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

settings = Settings(BASE_DIR)


def __dir__():
    return settings.dir(globals())


def __getattr__(name):
    return settings.getattr(name, globals())


_DEBUG = settings.boolean_value('DJANGO_DEBUG', False)
_ALLOWED_HOSTS = settings.list_value(
    'DJANGO_ALLOWED_HOSTS',
    ['localhost'] if _DEBUG.value else [],
    split_char=';'
)
_SECRET_KEY = settings.string_value('DJANGO_SECRET_KEY', required=True)
INSTALLED_APPS = [...]
from django.conf import setings

settings.DEBUG  # By default returns False

Rules

  1. You are not allowed to name a non ConfigValue using the naming scheme set for the Settings instance (suffix_underscore). For example, writing the following would raise a ValueError in the above example:
_INSTALLED_APPS = [...]
  1. You are not allowed to name a ConfigValue without using the naming scheme set for the Settings instance (suffix_underscore). For example, writing the following would raise a ValueError in the above example:
SECRET_KEY = settings.string_value('DJANGO_SECRET_KEY', required=True)
  1. You are not allowed to define 2 variable names that result in the same accessible name. For example, writing the following would raise a ValueError in the above example:
_SECRET_KEY = settings.string_value('DJANGO_SECRET_KEY', required=True)
SECRET_KEY = 'SECRET_KEY'

If you would like to customise these rules you can write your own __dir__ and __getattr__.

Cache values on first run

If you would like to cache all your static values at once, you can append Settings.cache_static_values(...) to the bottom of your settings file. For the example above, this would fetch DEBUG, ALLOWED_HOSTS and SECRET_KEY:

settings.cache_static_values()

If you are not using Settings.dir(...) and Settings.getattr(...), you may need to write your own function insead of using Settings.cache_static_values(...).

Download files

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

Source Distribution

django-enhanced-settings-0.2.4.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

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

django_enhanced_settings-0.2.4-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file django-enhanced-settings-0.2.4.tar.gz.

File metadata

  • Download URL: django-enhanced-settings-0.2.4.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.0.0-1032-azure

File hashes

Hashes for django-enhanced-settings-0.2.4.tar.gz
Algorithm Hash digest
SHA256 64f8172237ed0a0f50e64f626206889d80695c173f02b0202a679133bdd320ff
MD5 dbae6361d7a2d288c0de7c0ab7455afd
BLAKE2b-256 19e26ff08ba5dedc989212dcb07c1ab63fef7d70c49105e92c5e76f2f3c81dcd

See more details on using hashes here.

File details

Details for the file django_enhanced_settings-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for django_enhanced_settings-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d94a48caa1a3850a3ef0639add12bcc4bc0371241454f8aec7416cb087ef5f8f
MD5 c1f858c2c6a4472e709f384618cc5f6c
BLAKE2b-256 34217d90f44e0c66c2f79458ebb388ad90c0bd10ac9a703785dcaa7985bd5b25

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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