Как правильно подключать новое приложение?

Как правильно подключать новое приложение в Django?
В разных источниках встречал два способа:
1) в официальной документации приведен такой вариант
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'newapp.apps.NewappConfig',  # new app
]


2) во многих примерах применяется такой вариант
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'newapp',  # new app
]


В чем разница между этими двумя способами?
  • Вопрос задан
  • 2001 просмотр
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
А чем не устраивает официальное описание? Далее мой вольный перевод:

Чтобы сконфигурировать приложение, создайте модуль apps.py внутри приложения, затем определите тут класс - инстанс AppConfig.
Когда INSTALLED_APPS содержит путь отделенный точками к модулю приложения, по умолчанию, если Django находит только один инстанс класса AppConfig в модуле apps.py, он использует эту конфигурацию для приложения. Это поведение можно отключить установкой AppConfig.default в False.

Если модуль apps.py содержит более одного инстанса класса AppConfig, Django будет использовать тот, в котором AppConfig.default будет установлен в True.

Если никаких инстансов AppConfig не будет найдено, будет использован базовый AppConfig.

Как вариант, INSTALLED_APPS может содержать путь отделенный точками к классу, чтобы указать его явно:

INSTALLED_APPS = [
    ...
    'polls.apps.PollsAppConfig',
    ...
]



Сам Django использует по умолчанию путь до приложения:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
...


а не
INSTALLED_APPS = [
    'django.contrib.admin.apps.AdminConfig',
    'django.contrib.auth.apps.AuthConfig',
...


Поэтому если вам не нужно указывать по какой-то причине путь к инстансу AppConfig приложения явно - то можно ограничиться только путем к приложению.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы