Как отображается корневая домашняя страница django по умолчанию?
Это своего рода зуд желания узнать. Многие вопросы здесь спрашивают, как заменить домашнюю страницу Django по умолчанию ( например ). Я понимаю этот вопрос. Мне интересно знать, как отображается страница по умолчанию при создании нового проекта (т.е. в режиме отладки). Хотя мой вопрос не имеет такого прямого практического значения, как знание того, как заменить домашнюю страницу по умолчанию, у меня есть чувство, что если я выясню это, я смогу понять, как работает Django немного лучше.
Я бы ожидал, что он будет в стандартном файле urls.py, но единственная запись по умолчанию в urlpatterns
urls.py - path('admin/', admin.site.urls)
. Моим первым наивным ожиданием было бы наличие записи в urlpatterns, которую можно было бы удалить или закомментировать. Поскольку там нет ничего, кроме admin/
, я предполагаю, что есть какое-то другое встроенное приложение или промежуточное программное обеспечение, которое определяет домашнюю страницу по умолчанию, но я не знаю, где искать.
Вот мой прогресс в понимании этого на данный момент:
- Заключение
DEBUG=True
в settings.py приводит к тому, что домашняя страница по умолчанию больше не отображается. - Я видел документацию о том, как Django обрабатывает запросы, где упоминается промежуточное программное обеспечение, которое может установить атрибут urlconf в запросе, изменяющем значение по умолчанию,
ROOT_URLCONF
.
До сих пор Django был довольно простым, но это кажется чем-то волшебным, поэтому я пытаюсь понять, что происходит за кулисами.
Я благодарен за помощь!
Соответствующий код находится здесь. Django в принципе имеет специальный случай для случаев, когда в конфигурации URL не найден подходящий URL, а запрашиваемый путь /
, и в конфигурации URL есть только одна запись.
В этом случае он загружает default_urlconf
, который выдает шаблон приветствия вместо обычного ответа 404.
Это вызывается изнутри функции technical_404_response
, которая вызывается только когда DEBUG=True
.