Django - różnica między importem django.conf.settings a ustawieniami importu

99

Jaka jest podstawowa różnica między następującymi instrukcjami importu w aplikacji Django?

import settings

i

from django.conf import settings
ozgur
źródło
1
+1, ponieważ jest to bardzo interesujące pytanie dla tego, kto jest nowy w rozwoju Django.

Odpowiedzi:

134
import settings

Zaimportuje moduł ustawień (.py) twojego projektu Django (jeśli piszesz ten kod z pakietu "root" aplikacji, oczywiście)

from django.conf import settings

Zaimportuje obiekt ustawień z pakietu django.conf (pliki dostarczone przez Django). To ważne , ponieważ

[..] zwróć uwagę, że Twój kod nie powinien być importowany ani z global_settings, ani z własnego pliku ustawień. django.conf.settings wyodrębnia pojęcia dotyczące ustawień domyślnych i ustawień specyficznych dla witryny; przedstawia pojedynczy interfejs. Oddziela również kod, który używa ustawień, od lokalizacji ustawień.

UPDATE: jeśli chcesz zdefiniować własne ustawienia, zajrzyj do tej części dokumentacji


źródło
4
FYI, global_settings to kolejny moduł w pakiecie django.conf. Jak mówi dokumentacja, nie używaj go.
3
Zauważ, że używanie from django.conf import settingsjest krytyczne, jeśli chcesz mieć możliwość nadpisywania ustawień również podczas testów jednostkowych.
Joris
4
Należy również pamiętać, że wszystkie nazwy ustawień powinny być pisane wielkimi literami . Oznacza to, że jeśli masz var my_varw ustawieniach wtedy to zawiedzie: from django.conf import settings... settings.my_var. Ale jeśli MY_VARto nazwiesz, odniesie sukces!
nik_m,