В 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('Страница не существует')**
handler400
:
handler403
:
handler404
:
handler500
:
settings.py
В файле settings.py
Django использует параметры DEBUG
и ALLOWED_HOSTS
для обеспечения безопасности и управления поведением приложения в различных средах.
DEBUG
определяет, находится ли проект в режиме отладки (True) или в производственном режиме (False).DEBUG
установлен в True
, Django предоставляет дополнительную отладочную информацию при возникновении ошибок, а также автоматически обновляет код и обеспечивает другие возможности, удобные для разработки.DEBUG = False
), Django предоставляет минимум информации об ошибках и не отображает подробности трассировки ошибок пользователю, чтобы предотвратить возможные утечки информации о системе.ALLOWED_HOSTS
- это список строк, представляющих разрешенные хосты (домены), которые могут обращаться к приложению.ALLOWED_HOSTS
не указан или указан неверно, Django может отклонить запросы от не разрешённых хостов.ALLOWED_HOSTS
должен быть указан домен приложения.Важно изменять эти параметры для тестирования обработчиков ошибок (и перед паблишем проекта в продакшн), чтобы видеть их вывод, а не вывод отладочной информации из Django.
Например, в режиме отладки, если произойдет ошибка сервера (500), Django автоматически отобразит отладочную информацию, что удобно для разработчика, но не безопасно для конечного пользователя.
В производственной среде, где DEBUG должен быть установлен в False, пользователи не должны видеть подобную информацию, и им должна выводиться кастомизированная страница ошибки.
При переводе проекта в режим продакшена мы также должны указать список разрешённых хостов в ALLOWED_HOSTS
, иначе у нас не будет доступа к проекту.
Http404
- это класс исключения в Django, который используется для обработки ситуации, когда запрошенный ресурс (например, страница) не может быть найден. Обычно это возникает, когда пользователь запрашивает URL, который не существует в приложении.
Это исключение можно вызвать в представлении, когда необходимо сообщить клиенту, что запрошенная страница не найдена. Django предоставляет специальную функцию django.http.Http404()
для этого.