En DJANGO_SETTINGS_MODULE
variable d'environnement contrôle le fichier de paramètres que Django chargera.
Vous devez donc créer des fichiers de configuration distincts pour vos environnements respectifs (notez qu'ils peuvent bien sûr être tous les deux import *
à partir d'un fichier séparé de "paramètres partagés"), et utilisez DJANGO_SETTINGS_MODULE
pour contrôler lequel utiliser.
Voici comment :
Comme indiqué dans la documentation de Django :
La valeur de DJANGO_SETTINGS_MODULE doit être en syntaxe de chemin Python, par exemple mysite.settings. Notez que le module settings doit se trouver sur le chemin de recherche des importations Python.
Donc, supposons que vous avez créé myapp/production_settings.py
y myapp/test_settings.py
dans votre dépôt de sources.
Dans ce cas, vous devez respectivement définir DJANGO_SETTINGS_MODULE=myapp.production_settings
pour utiliser le premier et DJANGO_SETTINGS_MODULE=myapp.test_settings
d'utiliser ce dernier.
À partir de là, le problème se résume à régler le paramètre DJANGO_SETTINGS_MODULE
variable d'environnement.
Réglage de DJANGO_SETTINGS_MODULE
en utilisant un script ou un shell
Vous pouvez ensuite utiliser un script d'amorçage ou un gestionnaire de processus pour charger les paramètres corrects (en définissant l'environnement), ou simplement l'exécuter depuis votre shell avant de démarrer Django : export DJANGO_SETTINGS_MODULE=myapp.production_settings
.
Notez que vous pouvez exécuter cette exportation à tout moment à partir d'un shell - elle n'a pas besoin de vivre dans votre .bashrc
ou quoi que ce soit.
Réglage de DJANGO_SETTINGS_MODULE
en utilisant un gestionnaire de processus
Si vous n'aimez pas écrire un script de démarrage qui définit l'environnement (et il y a de très bonnes raisons de penser ainsi !), je recommanderais d'utiliser un gestionnaire de processus :
Enfin, notez que vous peut profiter de la PYTHONPATH
pour stocker les paramètres à un endroit complètement différent (par exemple, sur un serveur de production, en les stockant dans le fichier /etc/
). Cela permet de séparer la configuration des fichiers d'application. Vous pouvez ou non vouloir cela, cela dépend de la façon dont votre application est structurée.
1 votes
Regardez ici : stackoverflow.com/questions/88259/ et ici code.djangoproject.com/wiki/SplitSettings