Django, gestion des settings d'application simplifiée

Je reprends ici la méthode présentée par Nicolas et je la couple avec mon petit EasyDict pour alléger l'utilisation ! Comme ses snippets sont drôles, je ne les change pas !

Paramètres par défault de l'application

On a juste un constructeur à ajouter par rapport à ce qu'avait présenté NiKo (avec EasyDict installé).

# apps/my_app/__init__.py
from django.conf import settings
from easydict import EasyDict

app_settings = EasyDict(dict({
    'FOO': 42,
    'ENABLE_CHUCK_NORRIZ_MODE': False,
}, **getattr(settings, 'MY_APP_CONFIG', {})))

Surcharge dans le projet

# settings.py
MY_APP_CONFIG = {
    'ENABLE_CHUCK_NORRIZ_MODE': True,
}

Utilisation !

EasyDict transforme les clés du dict en attributs, on accède aux settings en toute simplicité !

# foo/bar.py
from my_app import app_settings

print app_settings.FOO # 42
# apps/my_app/utils.py
from . import app_settings

if app_settings.ENABLE_CHUCK_NORRIZ_MODE:
    print 'Chuck Norriz is watching you'
else:
    print 'Dance dance, little lamb'

#django, #easydict - Posted in the Dev category