В Django страница ошибки 404 отображается, когда запрошенный ресурс не найден. По умолчанию Django предоставляет простую и общую страницу 404. Однако вы можете настроить эту страницу в соответствии с внешним видом вашего веб-сайта или приложения. В этой статье мы рассмотрим несколько способов создания собственной страницы 404 в Django, а также приведем примеры кода.
Метод 1: собственный шаблон
Самый простой способ настроить страницу 404 — создать собственный шаблон. Выполните следующие действия:
- Создайте новый файл шаблона HTML, назовем его «404.html».
- Разработайте и настройте шаблон в соответствии со своими предпочтениями.
- В проекте Django перейдите к настройке «ШАБЛОНЫ» в файле settings.py.
- Добавьте путь к своему пользовательскому шаблону в список «DIRS».
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
},
]
- В файле urls.py вашего основного проекта добавьте в конце следующую строку:
handler404 = 'your_app.views.custom_404'
- Создайте функцию просмотра в 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. Этот метод позволяет вам лучше контролировать содержимое и заголовки ответа.
- В файл urls.py вашего основного проекта добавьте в конце следующую строку:
handler404 = 'your_app.views.custom_404'
- Создайте функцию просмотра в your_app/views.py для создания пользовательского ответа:
from django.http import HttpResponseNotFound
def custom_404(request, exception):
return HttpResponseNotFound('<h1>Page not found</h1>')
Метод 3: промежуточное программное обеспечение
Вы также можете настроить страницу 404 с помощью промежуточного программного обеспечения Django. Этот метод позволяет перехватывать объекты запроса и ответа и изменять их по мере необходимости.
- Создайте новый класс промежуточного программного обеспечения в 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
- В файле settings.py вашего проекта Django добавьте промежуточное ПО в список «MIDDLEWARE»:
MIDDLEWARE = [
...
'your_app.middleware.Custom404Middleware',
...
]
Метод 4: Сигналы
Сигналы Django позволяют выполнять определенные действия в различных точках цикла запроса/ответа. Используя сигналы, вы можете настроить страницу 404.
- Создайте функцию обработчика сигнала в 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)
- В файле settings.py вашего проекта Django добавьте следующую строку:
import your_app.signals
В этой статье мы рассмотрели различные способы настройки страницы 404 в Django. Независимо от того, предпочитаете ли вы использовать собственные шаблоны, HttpResponse, промежуточное программное обеспечение или сигналы, Django предоставляет гибкость, позволяющую адаптировать страницу 404 к вашим конкретным требованиям. Персонализируя страницу 404, вы можете улучшить взаимодействие с пользователем и поддерживать единый фирменный стиль вашего веб-сайта или приложения.