Django + WSGI: Quand wsgi.py est-il appelé?

J’ai déployé mon projet Django via Apache2 sur un serveur.

Le problème que j’ai est que j’ai deux modules de settings.py : settings.py qui sont mes parameters de développement local et settingsprod.py qui sont mes parameters de production.

J’ai trouvé la ligne suivante dans le WSGI.py:

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings") 

Ce module est-il uniquement utilisé lors de l’utilisation de WSGI? Et si oui est-ce un bon endroit pour utiliser mes parameters de production comme ça?

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settingsprod") 

Pour le développement local, j’utilise le serveur de développement comme suit:

 python3 manage.py runserver 

Est-ce que la valeur par défaut est toujours settings.py alors?

Oui, votre configuration fonctionne comme prévu. Bien que si vous utilisez des outils supplémentaires comme le céleri, vous devrez peut-être également spécifier le settingsprod de settingsprod pour ces configurations.

La manière dont je gère une telle situation est exactement l’inverse: j’utilise settings.py pour mes parameters de production et j’ai un settings_development.py supplémentaire que j’utilise pour toutes les tâches de développement. De cette façon, je ne me souviens pas de définir les parameters de production dans tous les fichiers pertinents pour la production, mais simplement d’utiliser les parameters de développement pour le développement comme suit:

 python3 manage.py runserver --settings=proj.settings_development 

Si vous utilisez souvent les commandes manage.py et que vous voulez gagner du temps en tapant, vous pouvez faire une copie de manage.py par exemple, en tant que manage_dev.py et modifier la ligne du module de configuration comme manage_dev.py :

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings_development") 

puis appelez vos fonctions de gestion avec:

 python3 manage_dev.py runserver