3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание



    Как кастомизировать 404 страницу ответов в Django, двумя способами

    Часы
    12.04.2025
    /
    Часы
    30.03.2026
    /
    Часы
    3 минуты
    Глазик
    1146
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0

    Вступление

    Для чего вообще заниматься настройкой и дизайном страниц ошибок, оп типу 404? По большей части для того, чтобы твой сайт выглядел и ощущался единым, и как бонус, если пользователь попадёт на такую страницу можно предложить ему другие похожие страницы тем самым избегая "отказов", увеличивая глубину и время просмотра. ( И по этому, второй способ предпочтительней )
    Возможно, как разработчик, ты сейчас не понял при чём здесь отказы, глубина и время. Если кратко, то это ключевые поведенческие факторы посетителей, которые могут повлиять на ранжирование сайта в поисковиках.
    В этой статье я покажу, два способа кастомизации таких страниц для django-проектов:
    1. Через переопределение шаблонов по умолчанию
    2. Через написание специальных представлений
    Всё будет делаться для 404 ошибки, но всё описанное будет так же применимо и к другим типам ошибок, как 500 (Ошибка сервера), 403 (Запрещено) 400 (Плохой запрос).
    Более подробное описание данных ошибок и их значение можешь прочитать в ссылках предоставленных выше, а мы продолжим.

    Подготовка к отладке и работе на локальном сервере

    Зачем это вообще делать

    Перед тем, как добавить и начать заниматься дизайном страницы 404, нужно подготовить проект к отображению такой страницы. Почему ? Спросишь ты. Дело всё в том, что в режиме отладки Debug=False, мы всегда будем получать вот такую вот страницу:
    А если перевести сервер в развёрнутое состояние, то есть Debug=False, будем получать стандартную страницу с сервера:
    Теперь, когда разобрались с тем, зачем подготавливать сервер к работе с ошибками типа 404, можно приступить к непосредственной настройке и подготовке.

    Подготавливаем Django к работе со страницами ошибок, как 404

    Во-первых, сделать и добавить директорию с шаблонами в список директорий, та что в settings.py. И если твои директории с шаблонами называются templates/, то ничего менять не придётся. Но если ты их называешь по другому, сделай следующее:
    TEMPLATES = [{ 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR, 'custom-templates-directory/'), ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]
    Добавь новый путь в DIRS. Этот код ты можешь найти в файле settings.py.
    Во-вторых, перевести сайт в "боевой" режим, то есть отключить все отладочные процессы, которые Django проводит при Debug=True в settings.py. Так же потребуется добавить имя хоста в ALLOWED_HOSTS:
    DEBUG = False ALLOWED_HOSTS = ['*']
    Я использую специальный символ, который говорит: "Хей, данный сервер доступен с любого адреса, наслаждайтесь!"
    Не забудь удалить данный специальный символ после отладки или после развёртывания на настоящем сервере.
    И на этом, как бы всё, но не совсем.

    Активируем стили во время отладки

    Если, конечно, твой сайт ещё не стилизован, то можешь смело пропустить эту главу до конца. Но давай честно, скорее всего у тебя уже есть некоторая стилизация на сайте и именно поэтому ты читаешь данную статью.
    И проделав все выше описанные шаги, ты ожидаешь увидеть что-то вроде этого:
    Это страница, которая не смогла загрузить стили, шрифты и скрипты ( статические файлы с сервера ). Что и подтверждает консоль разработчика.
    Итак, как же нам получить стили, скрипты и медиа с сервера?
    Чтобы исправить это, нужно немного изменить команду запуска сервера разработки. А именно запустить сервер без всяких защитных механизмов, то есть, вместо команды:
    python manage.py runserver
    Ты должен использовать:
    python manage.py runserver --insecure
    Теперь, все статические и медиа файлы должны быть доступны во время запуска "боевого" сервера. Ты ведь ещё помнишь, что мы это делаем, для того чтобы видеть наши собственные страницы ответов станиц 404 и 500?

    Собственная 404 страница

    Первый способ, через переопределение шаблона по умолчанию

    Есть несколько вариантов кастомизировать 404 страницу. Первый, самый простой, это сделать шаблон 404.html в любой templates/ директории в любом приложении.
    Если хочешь чтобы Django использовал другое название поменяй значение глобальной переменной в settings.py. С ERROR_404_TEMPLATE_NAME="404.html" на ERROR_404_TEMPLATE_NAME="EXAMPLE_404.html".
    То же самое применимо и к таким ответам сервера как 500, 403 и 400.

    Второй способ, через собственные представления

    Второй способ предлагает большую кастомизацию, чем первый. Итак, если нужно ещё сильнее кастомизировать страницу 404, можно написать собственное представление и добавить туда всё что пожелаешь. Напишем самое базовое представление для ответа 404, в файле по пути Backend/views.py:
    def page_not_found(request, exception): return render(request, '404.html', status=404)
    Осталось только его подключить к особенному обработчику. В urls.py, в любом приложении, в моём случае это всегда Backend приложение, добавь такую вот строчку:
    handler404 = "Backend.views.page_not_found"
    Есть так же обработчики 500, 403 и 400 ответов сервера, им соответствуют handler500, handler403 и handler400 соответственно.
    Хочу заметить, что для кодов 4хх, представления должны принимать 2 аргумента - запрос и исключение. А для 5хх только запрос.

    Вместо заключения

    Вот такие вот два способа я знаю, для использования собственных страниц ответов с сервера, как 404 или 500. Первый конечно же предпочтительней, ибо он проще, а значит можно допустить меньше ошибок. Второй более настраиваемый и гибкий. Но выбирать тебе.
    И ещё, когда закончишь с отладкой, верни всё в исходное состояние. То есть, DEBUG=True и очисти ALLOWED_HOSTS.
    Надеюсь эта статья была тебе полезна и ты смог создать свою собственную страницу 404.

    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (0)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Сейчас тут пусто. Буть первым (o゚v゚)ノ

    Другое

    Похожие статьи


    Попало много страниц в индекс? Что делать и надо ли?

    Часы
    02.03.2025
    /
    Часы
    23.03.2026
    Глазик
    694
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В индекс попали тысячи страниц пагинации и фильтрации, что можно с этим сделать и стоит ли? Закрыть их от индекса или может перенаправить их. Разберём на примере моего сайта.

    Как сделать кнопку загрузки контента используя Django, REST API, HTMx

    Часы
    01.04.2025
    /
    Часы
    24.03.2026
    Глазик
    526
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье я опишу способ, как можно реализовать асинхронную загрузку контента(статей) при помощи кнопки "Больше", которая сделана при помощи Django, REST API, HTMx и стилизовано при помощи DaisyUI

    Django, HTMx pagination, как сделать простой пагинатор ч. 1

    Часы
    02.04.2025
    /
    Часы
    24.03.2026
    Глазик
    602
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье я опишу то, как создать пагинатор используя Django и HTMx библиотеку. И то, почему это было так просто в сравнении с пагинатором на моём сайте. С шаблонами …

    Как сделать простой пагинатор на Django и HTMx. Добавляем сортировку и фильтры ч. 2

    Часы
    08.04.2025
    /
    Часы
    24.03.2026
    Глазик
    570
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье я опишу процесс и основные блоки кода, для того чтобы добавить сортировку и фильтрацию к пагинатору. Данный пагинатор написан на Django используя HTMx.

    Как добавить форму обратной связи на Django/Python и HTMx

    Часы
    11.04.2025
    /
    Часы
    24.03.2026
    Глазик
    1005
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье, я опишу как добавить на ваш Django-сайт форму обратной связи используя HTMx и немного DaisyUI, в качестве UI-библиотеки. Всё будет сделано на примере моего нового сайта. Но …

    Туториал про то, как добавить карту сайта (sitemap) на Django сайт

    Часы
    17.04.2025
    /
    Часы
    11.03.2026
    Глазик
    942
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье я опишу самый простой и понятный способ добавления карты сайта(sitemap) к Django сайту. Тут ты найдёшь три различных типа имплементации карт сайта, для статических страниц, для страниц …

    Использованные термины


    Релевантные вопросы