Django Settings

Um Django in verschiedenen Umgebungen betreiben zu können, kann man das settings.py verwenden. Oft genug passiert es, dass eine Umgebung von der anderen nur in einem Parameter unterscheidet. In der Regel ist das DEBUG = (True|False).

Dafür einen kompletten Satz von Einstellungen pflegen zu müssen stellt einen Aufwand dar, den man sich gerne sparen möchte. Der Ansatz, der sich bisher am besten bewährt hat ist, settings als Modul zu implementieren.

project/
  settings/
    __init__.py

In __init__.py können selbstverständlich alle Parameter gehalten werden, genau wie in settings.py auch. Die Verwendung mittels DJANGO_SETTINGS_MODULE bis hierher von der in der Dokumentation beschriebenen nicht abweichend:

export DJANGO_SETTINGS_MODULE=project.settings
django-admin.py runserver

Der Vorteil kommt einen Moment später ins Spiel, wenn man das Modul erweitert, z.B. folgendermaßen:

project/
  settings/
    __init__.py
    debug.py

debug.py:

#! /usr/bin/env python
#-*- coding: utf-8
from project.settings import *

DEBUG = True

Diese Konstrukt erlaubt sehr einfach, spezielle Einstellungen einzurichten, ohne dabei die Übersicht zu verlieren:

export DJANGO_SETTINGS_MODULE=project.settings.debug
django-admin.py runserver