Настройка страницы 404 в Django: методы и примеры кода

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

Метод 1: собственный шаблон
Самый простой способ настроить страницу 404 — создать собственный шаблон. Выполните следующие действия:

  1. Создайте новый файл шаблона HTML, назовем его «404.html».
  2. Разработайте и настройте шаблон в соответствии со своими предпочтениями.
  3. В проекте Django перейдите к настройке «ШАБЛОНЫ» в файле settings.py.
  4. Добавьте путь к своему пользовательскому шаблону в список «DIRS».
TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
    },
]
  1. В файле urls.py вашего основного проекта добавьте в конце следующую строку:
handler404 = 'your_app.views.custom_404'
  1. Создайте функцию просмотра в your_app/views.py для отображения пользовательского шаблона:
from django.shortcuts import render
def custom_404(request, exception):
    return render(request, '404.html', status=404)

Метод 2: собственный HttpResponse
Другой подход — создать собственный HttpResponse для ошибки 404. Этот метод позволяет вам лучше контролировать содержимое и заголовки ответа.

  1. В файл urls.py вашего основного проекта добавьте в конце следующую строку:
handler404 = 'your_app.views.custom_404'
  1. Создайте функцию просмотра в your_app/views.py для создания пользовательского ответа:
from django.http import HttpResponseNotFound
def custom_404(request, exception):
    return HttpResponseNotFound('<h1>Page not found</h1>')

Метод 3: промежуточное программное обеспечение
Вы также можете настроить страницу 404 с помощью промежуточного программного обеспечения Django. Этот метод позволяет перехватывать объекты запроса и ответа и изменять их по мере необходимости.

  1. Создайте новый класс промежуточного программного обеспечения в your_app/middleware.py:
from django.shortcuts import render
class Custom404Middleware:
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        response = self.get_response(request)

        if response.status_code == 404:
            return render(request, '404.html', status=404)

        return response
  1. В файле settings.py вашего проекта Django добавьте промежуточное ПО в список «MIDDLEWARE»:
MIDDLEWARE = [
    ...
    'your_app.middleware.Custom404Middleware',
    ...
]

Метод 4: Сигналы
Сигналы Django позволяют выполнять определенные действия в различных точках цикла запроса/ответа. Используя сигналы, вы можете настроить страницу 404.

  1. Создайте функцию обработчика сигнала в your_app/signals.py:
from django.shortcuts import render
from django.core.signals import got_request_exception
def custom_404(sender, request, kwargs):
    return render(request, '404.html', status=404)
got_request_exception.connect(custom_404)
  1. В файле settings.py вашего проекта Django добавьте следующую строку:
import your_app.signals

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