Замена шаблона 404 в Django

Замена шаблона страницы 404 — страница не найдена

Когда поднимается флаг 404ой ошибки, Django загружает специальный view для обработки 404 ошибок. Эта функция может переопределяться переменной handler404 в вашем основном URLconf. Это может быть полезным, если вы хотите выполнить собственный код при возникновении 404 ошибки.

Однако если вы хотите просто изменить отображение страницы, то для этого достаточно добавить в каталог templates файл 404.html, в котором сохранить текст шаблона.

При этом стандартная функция для 404ой django.views.defaults.page_not_found() отобразит ваш шаблон. Обратите внимание — ваш шаблон будет использован лишь в том случае, если переменная DEBUG установлена в False.

Когда DEBUG=False, вы должны обязательно прописать допустимые имена доменов в переменной ALLOWED_HOSTS, на котором будет работать приложение. В простейшем случае туда достаточно добавить ‘localhost’. Иначе Django будет генерировать ошибку “Bad Request (400)” (вы можете увидеть 500 код).

Обработка 500 (server error) ошибки

Аналогично, в вашем основном URLconf вы можете определить handler500, который укажет view для вызова в случае ошибок сервера. Ошибка сервера будет сгенерирована, если в вашем коде при выполнении окажутся ошибки.

Вы также можете добавить 500.html шаблон в корень вашего каталога templates, чтобы переопределить внешний вид страницы.

При этом вы должны понимать, что для того, чтобы вернуть созданный вами шаблон 500 ошибки, Django должна работать. Возможна ситуация, когда 500 ошибку вернет сам веб-сервер, если что-то неверно сконфигурировано.

Замена шаблона 404 в Django: 4 комментария

  1. Все сделал как описано, спасибо, помогло. Но.. почему то все стили и скрипты, которые подключаются к странице начали отдавать 404 ошибку.. если вернуть DEBUG в состояние True, скрипты грузятся как и должны. Вы не знаете случайно в чем может быть проблема?

      1. Переопределил шаблон.
        Проблема на самом деле уже решена, запустил сервер с кофигурацией «—insecure»

        1. У меня такая же проблемма. А можно более подробно? Где включить эту конфигурацию «—insecure»?
          Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *