Jaka jest różnica między `from django.conf import settings` a` import settings` w projekcie Django

92

Czytam, że większość ludzi to robi, from django.conf import settingsale nie rozumiem różnicy w stosunku do zwykłego robienia import settingsw pliku projektu django. Czy ktoś może wyjaśnić różnicę?

tzenderman
źródło
Ustawienia django.conf to domyślne ustawienia django lub „globalne”, które możesz nadpisać ustawieniami opartymi na własnym projekcie.
Jingo
7
NIGDY nie używaj drugiej formy. Pierwsza jest jedyną poprawną.
bruno desthuilliers
2
Ale dlaczego nigdy nie używać drugiego?
tzenderman
1
możliwy duplikat pliku ustawień importu Django
Anto,

Odpowiedzi:

111

import settingszaimportuje pierwszy moduł Pythona o nazwie settings.pyznaleziony w sys.path, zwykle (w domyślnych ustawieniach django). Umożliwia dostęp tylko do pliku ustawień zdefiniowanych w serwisie, który nadpisuje domyślne ustawienia django ( django.conf.global_settings).

Tak więc, jeśli spróbujesz uzyskać dostęp do prawidłowego ustawienia django, które nie zostało określone w pliku ustawień, pojawi się błąd.

django.conf.settingsnie jest plikiem, ale klasą tworzącą abstrakcję pojęć, ustawień domyślnych i ustawień specyficznych dla serwisu. Django wykonuje również inne kontrole, gdy używasz from django.conf import settings.

Możesz go również znaleźć w dokumentacji django .

Mam nadzieję że to pomoże.

Juliusz Cezar
źródło
5
import settingszaimportuje pierwszy moduł Pythona o nazwie settings.pyznaleziony w sys.path. Może to nie być „plik ustawień zdefiniowanych przez witrynę”, który jest wyszukiwany w zmiennej środowiskowej „DJANGO_SETTINGS_MODULE” i może to być dowolny pakiet lub moduł Pythona.
bruno desthuilliers
@brunodesthuilliers dziękuje. Aktualizuję swoją odpowiedź, biorąc pod uwagę Twoją korektę.
juliocesar
22

from django.conf import settings jest lepszą opcją.

Używam różnych plików ustawień dla tego samego projektu django (jeden dla „live”, jeden dla „dev”), pierwszy wybierze ten, który jest wykonywany.

mansuetus
źródło