Django - Unterschied zwischen dem Import von django.conf.settings und den Importeinstellungen

99

Was ist der grundlegende Unterschied zwischen den folgenden Importanweisungen in einer Django-App?

import settings

und

from django.conf import settings
Ozgur
quelle
1
+1, weil es eine sehr interessante Frage für diejenigen ist, die neu in der Django-Entwicklung sind.

Antworten:

134
import settings

Importiert das Einstellungsmodul (.py) Ihres Django-Projekts (wenn Sie diesen Code natürlich aus dem "root" -Paket Ihrer Anwendung schreiben)

from django.conf import settings

Wird importieren Einstellungen Objekt aus django.conf Paket (Djangos bereitgestellt Dateien). Das ist wichtig , weil

[..] Beachten Sie, dass Ihr Code weder aus global_settings noch aus Ihrer eigenen Einstellungsdatei importiert werden sollte. django.conf.settings abstrahiert die Konzepte von Standardeinstellungen und ortsspezifischen Einstellungen. Es präsentiert eine einzige Schnittstelle. Außerdem wird der Code, der Einstellungen verwendet, vom Speicherort Ihrer Einstellungen entkoppelt.

UPDATE: Wenn Sie eigene Einstellungen definieren möchten, lesen Sie diesen Teil der Dokumentation


quelle
4
Zu Ihrer Information, global_settings ist ein weiteres Modul im Paket django.conf. Verwenden Sie es nicht, wie in der Dokumentation angegeben.
3
Beachten Sie, dass die Verwendung von entscheidender Bedeutung from django.conf import settingsist, wenn Sie Einstellungen auch während des Komponententests überschreiben möchten.
Joris
4
Beachten Sie auch, dass alle Einstellungsnamen in Großbuchstaben geschrieben werden sollten . Das heißt, wenn Sie einen var hat my_varin Ihren Einstellungen , dann wird dies fehlschlagen: from django.conf import settings... settings.my_var. Aber wenn Sie es nennen MY_VAR, wird es gelingen!
Nik_m