Django Домашняя страница по умолчанию не найдена - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть проект Django, и он работает правильно, но не отображает домашнюю страницу по умолчанию.

Я знаю, что вы должны добавить шаблон URL для отображения , но это не совсем то, что я спрашиваю.

Обычно, если вы создаете проект Django, Django будет предоставлять вам веб-страницу по умолчанию примерно в таком виде Django 2 default home page

И вы можете изменить его добавив шаблон URL для '/' в 'project.urls' следующим образом:

urlpatterns = [
...
url(r'^$', wellcomeView, name='wellcomeView'),
...
]

Но обычно Django должен показывать эту домашнюю страницу по умолчанию, пока вы ничего не меняете в шаблонах URL или настройки.

Так что это мой вопрос: Я ничего не изменил в настройках или URL-адресах, но после миграции он перестал показывать страницу по умолчанию. Что может вызвать это?

Это мой сценарий:

1 - я создал Django 2.2.7 проект (все в порядке)

2 - Приложения, модели. Но теперь просмотров

3- Миграции, созданные дб, тестовые модели. Все еще нет никаких просмотров, но показывает домашнюю страницу по умолчанию.

4 - Смена моделей, снова и снова, и миграция каждый раз. (Но по-прежнему нет просмотров, и не меняются настройки или URL-адреса, только поиск на странице администратора по умолчанию. Также по-прежнему отображается домашняя страница по умолчанию.)

5 - Изменение моделей и их миграция без каких-либо изменений в настройках или URL-адресах. Но все равно все в порядке.

6 - После миграции внезапно Django перестал обслуживать домашнюю страницу по умолчанию. и выдает ошибку 404 вот так: Django 404 error meaningless.

7- ПОЧЕМУ? Я знаю, это не проблема, я создам вид и добавлю шаблон URL для '/', которые используют это представление, так что это не будет проблемой. Но , Интересно только, почему Django перестал это обслуживать?

Я искал, но не смог найти хорошего объяснения это поведение. Поэтому с просьбой выучить только «Почему» , иначе я знаю, как показать представление по адресу «/».

1 Ответ

0 голосов
/ 27 февраля 2020

Вы найдете объяснение в логи c исходного кода , который управляет этим поведением:

if (not tried or (                  # empty URLconf
    request.path == '/' and
    len(tried) == 1 and             # default URLconf
    len(tried[0]) == 1 and
    getattr(tried[0][0], 'app_name', '') == getattr(tried[0][0], 'namespace', '') == 'admin'
)):
    return default_urlconf(request)

В частности, представление "установка успешно" загружается только if:

  • Вы находитесь в режиме отладки;
  • Вы посещаете root URL (/);
  • Ваша конфигурация URL пуста или содержит только одну запись, и эта запись является записью /admin/ по умолчанию, которая генерируется автоматически при запуске нового проекта.

В вашем случае вы добавили что-то в конфигурацию URL (правило evrak/), поэтому эти условия не выполняются.

...