Project

General

Profile

HowDoWeDoDjangoSettings

Application simple

Le fichier settings.py est celui créé par Django (lors du startproject), on y ajoute la possibilité de charger des paramètres supplémentaires en ajoutant ces lignes à la fin (avec FOOBAR remplacé par le nom du projet) :

local_settings_file = os.environ.get('FOOBAR_SETTINGS_FILE',
        os.path.join(os.path.dirname(__file__), 'local_settings.py'))
if os.path.exists(local_settings_file):
    execfile(local_settings_file)

Commentaires

Par rapport à la forme from local_settings import * précédemment pratiquée, ça a l'avantage de donner un accès aux différentes variables déjà définies, pour par exemple permettre au fichier donné d'altérer INSTALLED_APPS.

Un inconvénient est que le fichier n'est pas surveillé par django, les modifications qui y sont faites ne sont pas automatiquement prises en compte, un redémarrage (ou la modification d'un autre fichier) est nécessaire.

Application multitenant

Le multitenant s'obtient pour une application donnée en utilisant le package python-hobo (à ne pas confondre avec l'application hobo). Pour devenir multitenant, une application doit entre autres modifier ses settings. Les modifications requises sont encapsulées dans un fichier de configuration debian_config_common.py que l'installation du package python-hobo positionne dans /usr/lib/hobo/.
Considérons une des briques applicatives de Publik, appelons là 'foobar'. La succession de chargement des settings se produit commme suit:

  • l'application charge son fichier de config par défaut settings.py que l'on trouve dans les sources à la racine du package 'foobar' : /usr/lib/pythonX.X/dist-packages/foobar
  • foobar.settings.py charge le fichier pointé par la variable d'environnement FOOBAR_SETTINGS_FILE comme décrit dans le cas d'une application simple, ce fichier a généralement pour nom debian_config.py et est positionné dans /usr/lib/foobar/
  • debian_config.py charge /usr/lib/hobo/debian_config_common.py

L'essentiel de la configuration est chargé à ce moment là. Cependant, si ils sont présents, des fichiers additionnels de configuration seront encore chargés:

  • /etc/foobar/settings.py

Et les éventuels

  • /etc/foobar/settings.d/*.py

Also available in: PDF HTML TXT