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

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

Содержание



    Как кастомизировать 404 и 500 страницы ответов в Django

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

    Предварительная настройка проекта

    Перед тем, как начать добавлять кастомные страницы для 404 и 500 ответов, нужно будет настроить ваш проект.
    Во-первых, сделать и добавить директорию с шаблонами в список директорий, та что в 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 = ['*']
    Я использую специальный символ, который как бы говорит, хей, данный сервер доступен с любого адреса, наслаждайтесь! Не забудь удалить данный специальный символ после отладки или после развёртывания на настоящем сервере.
    Делаем мы это, только потому что нам нужно увидеть результат наших изменений. И если этого не сделать, то мы постоянно будем получать вот такие вот страницы, в независимости от того что мы сделаем дальше:
    И на этом, как бы всё, но не совсем. Если, конечно, твой сайт ещё не стилизован, то можешь смело пропустить эту главу до конца. Но давай честно, скорее всего у тебя уже есть некоторая стилизация на сайте и именно поэтому ты читаешь данную статью. Потому что хочешь завершить вёрстку/стилизацию сайта, если конкретнее то вёрстку/стилизацию 404, 500 и прочих ответов с сервера.
    И проделав все выше описанные шаги, ты ожидаешь увидеть что-то вроде этого:
    Все стили и скрипты загрузились и применились, красота ⊂(・ω・*⊂)
    Но ты увидишь, что-то вроде этого:
    Клиенту не удалось получить статические файлы с сервера. Что и подтверждает консоль разработчика. Итак, как же нам получить стили, скрипты и медиа с сервера?
    Чтобы исправить это, нужно немного изменить команду запуска сервера разработки. А именно запустить сервер без всяких защитных механизмов, то есть, вместо команды:
    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.
    Второй способ предлагает большую кастомизацию, чем первый. Итак, если нужно ещё сильнее кастомизировать страницы с ответами сервера 400, 403, 404 и 500, можно написать собственное представление и добавить туда всё что пожелаешь. Напишем самое базовое представление для ответа 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. Надеюсь эта статья была тебе полезна.

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

    Комментарии

    (0)

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

    Другое

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


    Что делать при попадании страниц пагинации в индекс и увеличении количества ошибок типа “Вариант страницы с тегом canonical”

    Часы
    02.03.2025
    /
    Часы
    02.10.2025
    Глазик
    365
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    О том, что делать если у вас произошёл резкий рост неканонических страниц в GSC или Яндекс Вебмастере. А так же, когда такое происходит и почему (Спойлер это пагинато и страницы …

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

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

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

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

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

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

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

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

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

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

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


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