В чем разница между `from django.conf import settings` и` import settings` в проекте Django

92

Я читаю, что делают большинство людей, from django.conf import settingsно я не понимаю разницы в простом выполнении import settingsв файле проекта django. Кто-нибудь может объяснить разницу?

Цендерман
источник
Настройки django.conf - это настройки по умолчанию django или «глобальные» настройки, которые вы можете переопределить настройками вашего собственного проекта.
Jingo
7
НИКОГДА не используйте вторую форму. Первый - единственно правильный.
bruno desthuilliers
2
Но почему никогда не использовать второй?
tzenderman
1
возможный дубликат файла настроек импорта Django
Anto

Ответы:

111

import settingsобычно импортирует первый модуль python, указанный settings.pyв sys.path(в настройках django по умолчанию). Он разрешает доступ только к файлу настроек, заданному на вашем сайте, который перезаписывает настройки django по умолчанию ( django.conf.global_settings).

Итак, если вы попытаетесь получить доступ к допустимой настройке django, не указанной в вашем файле настроек, вы получите сообщение об ошибке.

django.conf.settingsне файл, а класс, который представляет собой абстракцию концепций, настроек по умолчанию и настроек вашего сайта. Django также выполняет другие проверки, когда вы используете from django.conf import settings.

Вы также можете найти его в документации django .

Надеюсь это поможет.

Юлиоцесар
источник
5
import settingsимпортирует первый модуль Python с именем, settings.pyнайденным в sys.path. Это может быть не «файл настроек, определенный сайтом», который ищется в переменной среды «DJANGO_SETTINGS_MODULE», и может быть просто любым пакетом или модулем python.
bruno desthuilliers
@brunodesthuilliers благодарит вас. Я обновляю свой ответ, учитывая ваше исправление.
juliocesar
22

from django.conf import settings лучший вариант.

Я использую разные файлы настроек для одного и того же проекта django (один для «live», один для «dev»), первый выберет тот, который выполняется.

Mansuetus
источник