Django - Différence entre l'importation django.conf.settings et les paramètres d'importation

99

Quelle est la différence fondamentale entre les instructions d'importation suivantes dans une application Django?

import settings

et

from django.conf import settings
Ozgur
la source
1
+1 parce que c'est une question très intéressante pour qui est nouveau dans le développement de Django.

Réponses:

134
import settings

Importera le module de paramètres (.py) de votre projet Django (si vous écrivez ce code à partir du package "racine" de votre application, bien sûr)

from django.conf import settings

Importera l' objet de paramètres depuis le package django.conf (fichiers fournis par Django). Ceci est important , car

[..] notez que votre code ne doit pas être importé à partir de global_settings ou de votre propre fichier de paramètres. django.conf.settings résume les concepts de paramètres par défaut et de paramètres spécifiques au site; il présente une interface unique. Il dissocie également le code qui utilise les paramètres de l'emplacement de vos paramètres.

MISE À JOUR: si vous souhaitez définir vos propres paramètres, consultez cette partie de la documentation


la source
4
Pour info, global_settings est un autre module à l'intérieur du package django.conf. Comme le dit la documentation, ne l'utilisez pas.
3
Notez que l'utilisation from django.conf import settingsest essentielle si vous souhaitez également pouvoir écraser les paramètres pendant les tests unitaires.
Joris
4
Notez également que tous les noms de paramètres doivent être en majuscules . C'est, si votre un var my_vardans vos paramètres alors ce échouera: from django.conf import settings... settings.my_var. Mais si vous le nommez, MY_VARil réussira!
nik_m