Django - разница между import django.conf.settings и настройками импорта

100

В чем основное различие между следующими операторами импорта в приложении Django?

import settings

и

from django.conf import settings
озгур
источник
1
+1 потому что это очень интересные вопросы для новичков в разработке Django.

Ответы:

134
import settings

Импортирует модуль настроек (.py) вашего проекта Django (если вы, конечно, пишете этот код из "корневого" пакета вашего приложения)

from django.conf import settings

Импортирует объект настроек из пакета django.conf (файлы, предоставленные Django). Это важно , потому что

[..] обратите внимание, что ваш код не должен импортировать ни из global_settings, ни из вашего собственного файла настроек. django.conf.settings абстрагирует концепции настроек по умолчанию и настроек для конкретного сайта; он представляет собой единый интерфейс. Он также отделяет код, который использует настройки, от местоположения ваших настроек.

ОБНОВЛЕНИЕ: если вы хотите определить некоторые собственные настройки, см. Эту часть документации


источник
4
К вашему сведению, global_settings - это еще один модуль внутри пакета django.conf. Как сказано в документации, не используйте его.
3
Обратите внимание, что использование from django.conf import settingsочень важно, если вы хотите иметь возможность перезаписывать настройки во время модульного тестирования.
Джорис
4
Также обратите внимание, что все имена настроек должны быть в верхнем регистре . То есть, если ваш есть вар my_varв настройках , то это будет не в состоянии : from django.conf import settings... settings.my_var. Но если вы его MY_VARназовете, все получится!
ник_м