Яка різниця між `від налаштувань імпорту django.conf` та` налаштувань імпорту` у проекті Django


92

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


Налаштування django.conf - це за замовчуванням або "загальні" налаштування django, які ви можете замінити власними налаштуваннями на основі проекту.
Jingo

7
НІКОЛИ НІКОЛИ не використовуйте другу форму. Перший - єдино правильний.
bruno desthuilliers

2
Але чому ніколи не використовувати другу?
tzenderman

Відповіді:


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"), перший вибере той, який виконується.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.