Предварительная настройка проекта
Перед тем, как начать добавлять кастомные страницы для 404 и 500 ответов, нужно будет настроить ваш проект.
Во-первых, сделать и добавить директорию с шаблонами в список директорий, та что в settings.py. И если твои директории с шаблонами называются templates/, то ничего менять не придётся. Но если ты их называешь по другому, сделай следующее:
Добавь новый путь в DIRS. Этот код ты можешь найти в файле settings.py.
Во-вторых, перевести сайт в "боевой" режим, то есть отключить все отладочные процессы, которые Django проводит при Debug=True в settings.py. Так же потребуется добавить имя хоста в ALLOWED_HOSTS:
Делаем мы это, только потому что нам нужно увидеть результат наших изменений. И если этого не сделать, то мы постоянно будем получать вот такие вот страницы, в независимости от того что мы сделаем дальше:


И на этом, как бы всё, но не совсем. Если, конечно, твой сайт ещё не стилизован, то можешь смело пропустить эту главу до конца. Но давай честно, скорее всего у тебя уже есть некоторая стилизация на сайте и именно поэтому ты читаешь данную статью. Потому что хочешь завершить вёрстку/стилизацию сайта, если конкретнее то вёрстку/стилизацию 404, 500 и прочих ответов с сервера.
И проделав все выше описанные шаги, ты ожидаешь увидеть что-то вроде этого:

Все стили и скрипты загрузились и применились, красота ⊂(・ω・*⊂)
Но ты увидишь, что-то вроде этого:


Клиенту не удалось получить статические файлы с сервера. Что и подтверждает консоль разработчика. Итак, как же нам получить стили, скрипты и медиа с сервера?
Чтобы исправить это, нужно немного изменить команду запуска сервера разработки. А именно запустить сервер без всяких защитных механизмов, то есть, вместо команды:
Ты должен использовать:
Теперь, все статические и медиа файлы должны быть доступны во время запуска "боевого" сервера. Ты ведь помнишь, что мы это делаем, для того чтобы видеть наши собственные страницы ответов 404 и 500?
Собственная 404 страница и прочие страницы ответов сервера
Есть несколько вариантов кастомизировать 404 страницу. Первый, самый простой, это сделать шаблон 404.html в любой templates/ директории в любом приложении.
То же самое применимо и к таким ответам сервера как 500, 403 и 400.
Второй способ предлагает большую кастомизацию, чем первый. Итак, если нужно ещё сильнее кастомизировать страницы с ответами сервера 400, 403, 404 и 500, можно написать собственное представление и добавить туда всё что пожелаешь. Напишем самое базовое представление для ответа 404, в файле по пути Backend/views.py:
Осталось только его подключить к особенному обработчику. В urls.py, в любом приложении, в моём случае это всегда Backend приложение, добавь такую вот строчку:
Есть так же обработчики 500, 403 и 400 ответов сервера, им соответствуют handler500, handler403 и handler400 соответственно. Хочу заметить, что для кодов 4хх, представления должны принимать 2 аргумента - запрос и исключение. А для 5хх только запрос.
Вместо заключения
Вот такие вот два способа я знаю, для использования собственный страниц ответов с сервера, как 404 или 500. Первый конечно же предпочтительней, ибо он проще, а значит можно допустить меньше ошибок. Второй более кастомизируемый и гибкий.
И ещё, когда закончишь с отладкой, верни всё в исходное состояние. То есть, DEBUG=True и очисти ALLOWED_HOSTS. Надеюсь эта статья была тебе полезна.