Глобальные обработчики ошибок

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

Глобальные обработчики ошибок в Django определяются в файле urls.py проекта и применяются ко всему приложению. Они используются для обработки конкретных типов ошибок на уровне всего приложения, таких как ошибки 404 (страница не найдена), ошибки 500 (внутренняя ошибка сервера) и т.д.

#urls.py (for project)

from django.contrib import admin
from django.urls import path, include
**from basefunc.views import page_not_found**

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('basefunc.urls')),
]

**handler404 = page_not_found**

Сама функция-представление при этом может быть описана как в файле с представлениями для главного приложения или в отдельном файле, например, handlers.py.

#views.py (for app)
from django.http import HttpResponse, **HttpResponseNotFound**
...

**def page_not_found(request, exception):
    return HttpResponseNotFound('Страница не существует')**

Основные глобальные обработчики ошибок

  1. handler400:
  2. handler403:
  3. handler404:
  4. handler500:

Настройка файла settings.py

В файле settings.py Django использует параметры DEBUG и ALLOWED_HOSTS для обеспечения безопасности и управления поведением приложения в различных средах.

  1. DEBUG:
  2. ALLOWED_HOSTS:

Важно изменять эти параметры для тестирования обработчиков ошибок (и перед паблишем проекта в продакшн), чтобы видеть их вывод, а не вывод отладочной информации из Django. Например, в режиме отладки, если произойдет ошибка сервера (500), Django автоматически отобразит отладочную информацию, что удобно для разработчика, но не безопасно для конечного пользователя. В производственной среде, где DEBUG должен быть установлен в False, пользователи не должны видеть подобную информацию, и им должна выводиться кастомизированная страница ошибки. При переводе проекта в режим продакшена мы также должны указать список разрешённых хостов в ALLOWED_HOSTS, иначе у нас не будет доступа к проекту.

Обработка исключений

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

Это исключение можно вызвать в представлении, когда необходимо сообщить клиенту, что запрошенная страница не найдена. Django предоставляет специальную функцию django.http.Http404() для этого.