Как кастомизировать 404 и 500 страницы ответов в Django
12.04.2025
15.04.2025
3 минуты
70
0
0
0
0
Предварительная настройка проекта
Перед тем, как начать добавлять кастомные страницы для 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. Надеюсь эта статья была тебе полезна.
Комментарии
(0)
Отправить
Сейчас тут пусто. Буть первым (o゚v゚)ノ
Другое
Похожие статьи
Использованные термины
- CSS (Таблица каскадных стилей) ⟶ Это язык стилизации, который используется для описания внешнего вида и форматирования документов, написанных на HTML и XML (включая такие языки разметки, как SVG и XHTML). CSS позволяет веб-разработчикам и дизайнерам разделять содержание веб-страниц и их визуальное представление, что упрощает создание и поддержку сайтов.
- Джанго фреймворк ⟶ Это высокоуровневый веб-фреймворк на языке программирования Python, который позволяет разработчикам создавать веб-приложения быстрее и с меньшими затратами на время благодаря своим мощным инструментам и встроенным функциям. Он был разработан для упрощения разработки сложных веб-сайтов и предоставляет множество «из коробки» функций
- CORS (Cross-Origin Resource Sharing) ⟶ Это механизм, который позволяет ограничить ресурсы веб-страниц, чтобы они могли запросить ресурсы с других доменов. Поскольку правила безопасности браузеров по умолчанию блокируют такие запросы (из-за политики одинаковых источников), CORS предоставляет способ более безопасного доступа к ресурсам с других источников.
- Вебсайт ⟶ Это совокупность связанных между собой веб-страниц, доступных через интернет и имеющих одно общее доменное имя. Каждый веб-сайт может содержать текстовую информацию, изображения, видео и другие мультимедийные элементы. Веб-сайты могут выполнять различные функции, включая предоставление информации, общение, онлайн-торговлю и множество других взаимодействий.
Релевантные вопросы
- Каким хостинг провайдером пользуешься ? На данный момент я пользуюсь beget-ом. Пока меня всё устраивает.
- Мое приложение некорректно отображается на сервере? Если это не работает, в 99% случаев это проблема конфигурации. Отсутствующее свойство, неправильный порядок вызовов или отсутствующий компонент — серверный рендеринг строго относится к конфигурации. Лучший способ выяснить, что не так, — сравнить свой проект с уже работающей настройкой. Ознакомьтесь с эталонными реализациями по частям.
- Как ограничить доступ администратора, чтобы объекты могли редактировать только те пользователи, которые их создали? Класс ModelAdmin также предоставляет хуки настройки, которые позволяют вам контролировать видимость и возможность редактирования объектов в админке. Используя тот же трюк извлечения пользователя из запроса, get_queryset() и has_change_permission() можно использовать для контроля видимости и возможности редактирования объектов в админке.