Как отображается корневая домашняя страница 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.

Вернуться на верх