Исключения Django¶
Django вызывает несколько собственных исключений на ряду со стандартными исключениями Python.
Основные исключения Django¶
Основные исключения Django определены в django.core.exceptions.
AppRegistryNotReady¶
- exception AppRegistryNotReady¶
Это исключение будет вызвано при попытке использовать модели до загрузки приложений, которая инициализирует ORM.
ObjectDoesNotExist¶
- exception ObjectDoesNotExist¶
Базовый класс для исключений
Model.DoesNotExist.try/ExceptionдляObjectDoesNotExistперехватывает исключенияDoesNotExistдля всех моделей.См.
get().
EmptyResultSet¶
- exception EmptyResultSet¶
EmptyResultSetможет быть вызван при выполнении запроса, если запрос ничего не вернул. Большинство проектов Django не встретят это исключение, но оно может быть полезно для реализации собственных выражений и условий поиска.
ПолныйНабор Результатов¶
- exception FullResultSet¶
FullResultSetможет быть вызван во время генерации запроса, если запрос будет соответствовать всему. Большинство проектов Django не столкнутся с этим исключением, но оно может быть полезно для реализации пользовательских поисков и выражений.
FieldDoesNotExist¶
- exception FieldDoesNotExist¶
Исключение
FieldDoesNotExistвызывается методом_meta.get_field()модели, если запрошенное поле не найдено в модели или в предках модели.
MultipleObjectsReturned¶
- exception MultipleObjectsReturned¶
Базовый класс для исключений
Model.MultipleObjectsReturned.try/ExceptionдляMultipleObjectsReturnedперехватывает исключенияMultipleObjectsReturnedдля всех моделей.См.
get().
SuspiciousOperation¶
- exception SuspiciousOperation¶
Исключение
SuspiciousOperationвызывается когда пользователь выполнил операцию, которая должна быть рассмотрена как подозрительная с точки зрения безопасности, например, при подмене куки сессии. ПодклассыSuspiciousOperation:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
Если исключение SuspiciousOperation достигает уровня обработчика ASGI/WSGI, оно регистрируется на уровне Error и приводит к возникновению
HttpResponseBadRequest. Дополнительную информацию смотрите в документации по журналированию.
PermissionDenied¶
- exception PermissionDenied¶
Исключение
PermissionDeniedвызывается если пользователь не имеет права на выполнение запрошенного действия.
ViewDoesNotExist¶
- exception ViewDoesNotExist¶
Исключение
ViewDoesNotExistвызывается модулемdjango.urls, если запрошенное представление на найдено.
MiddlewareNotUsed¶
- exception MiddlewareNotUsed¶
Исключение
MiddlewareNotUsedвызывается, если мидлвар не используется в конфигурации сервера.
ImproperlyConfigured¶
- exception ImproperlyConfigured¶
Исключение
ImproperlyConfiguredвызывается, если Django неправильно сконфигурировано. Например, если значение вsettings.pyнеправильное.
FieldError¶
- exception FieldError¶
Исключение
FieldErrorвызывается, если существует проблема с полем модели. Такое может произойти по следующим причинам:Поле в модели конфликтует с полем абстрактного класса, которое имеет такое же имя.
Бесконечный цикл, вызванный сортировкой.
Аргумент не может быть получен из параметров фильтра.
Поле не может быть определено из аргумента в параметрах запроса.
Объединение не разрешено для указанного поля.
Имя поля неверное.
Запрос состоит из неверного порядка аргументов.
ValidationError¶
- exception ValidationError¶
Исключение
ValidationErrorвызывается, если происходит ошибка проверки данных от формы или модели. Для подробностей о проверке данных, см. Проверка форм и полей, Проверка поля модели и the Справочник проверки.
NON_FIELD_ERRORS¶
- NON_FIELD_ERRORS¶
ValidationError, которые не относятся ни к одному из полей формы или модели, классифицируются как NON_FIELD_ERRORS. Эта константа определяет ключ в словаре ошибок.
BadRequest¶
- exception BadRequest¶
Исключение
BadRequestвозникает, когда запрос не может быть обработан из-за ошибки клиента. Если исключениеBadRequestдостигает уровня обработчика ASGI/WSGI, это приводит к возникновениюHttpResponseBadRequest.
RequestDataTooBig¶
- exception RequestAborted¶
Исключение
RequestAbortedвозникает, когда тело HTTP, считываемое обработчиком, прерывается в середине потока и клиентское соединение закрывается, или когда клиент не отправляет данные и достигает таймаута, когда сервер закрывает соединение.Он является внутренним для модулей обработчика HTTP, и вы вряд ли увидите его где-либо еще. Если вы изменяете код обработки HTTP, вам следует вызвать его при возникновении прерванного запроса, чтобы убедиться, что сокет закрыт правильно.
SuspiciousOperation¶
- exception SynchronousOnlyOperation¶
Исключение
SynchronousOnlyOperationвозникает, когда код, который разрешен только в синхронном коде Python, вызывается из асинхронного контекста (потока с работающим асинхронным циклом событий). Функционирование этих частей Django, как правило, сильно зависит от потокобезопасности и не работает корректно в сопрограммах, использующих один и тот же поток.Если вы пытаетесь вызвать код, который является только синхронным, из асинхронного потока, создайте синхронный поток и вызовите его в нем. Вы можете сделать это с помощью
asgiref.sync.sync_to_async().
Ошибки определения URL¶
Ошибки определения URL определены в django.urls.
Resolver404¶
- exception Resolver404¶
Исключение
Resolver404вызывается вresolve(), если путь переданный вresolve()не соответствует ни одному представлению. Подклассdjango.http.Http404.
NoReverseMatch¶
- exception NoReverseMatch¶
Исключение
NoReverseMatchвызывается модулемdjango.urls, если не получилось найти соответствующий URL по переданным параметрам.
Исключения базы данных¶
Ошибки базы данных определены в django.db.
Django оборачивает стандартные исключения базы данных таким образом, что код Django гарантирует стандартную реализацию этих классов.
- exception Error¶
- exception InterfaceError¶
- exception DatabaseError¶
- exception DataError¶
- exception OperationalError¶
- exception IntegrityError¶
- exception InternalError¶
- exception ProgrammingError¶
- exception NotSupportedError¶
Обёртка Django для исключений базы данных ведёт себя аналогично обёртываемым исключениям. См. PEP 249, вторую версию Python Database API Specification, для подробностей.
В соответствии с PEP 3134 атрибут __cause__ содержит изначальное исключение базы данных, предоставляя доступ к дополнительной информации.
- exception models.ProtectedError¶
Выбрасывается для предотвращения удаления связанных объектов при использовании django.db.models.PROTECT. models.ProtectedError`является дочерним классом :exc:`IntegrityError.
- exception models.RestrictedError¶
Поднят для предотвращения удаления объектов, на которые имеются ссылки, при использовании django.db.models.RESTRICT. models.RestrictedError является подклассом IntegrityError.
HTTP-исключения¶
Исключения HTTP можно импортировать из django.http.
UnreadablePostError¶
- exception UnreadablePostError¶
Исключение
UnreadablePostErrorвыбрасывается когда пользователь прерывает закачку файла.
Исключения сеансов¶
Исключения сеансов определены в django.contrib.sessions.Exceptions.
Сессия прервана¶
- exception SessionInterrupted¶
SessionInterruptedвозникает, когда сеанс уничтожается в параллельном запросе. Это подклассBadRequest.
Исключения транзакций¶
Ошибки транзакции определены в django.db.transaction.
TransactionManagementError¶
- exception TransactionManagementError¶
Исключение
TransactionManagementErrorвызывается для всех проблем с транзакциями в базе данных.
Исключения, используемые в тестах¶
Ошибки HTTP определенны в django.test.
RedirectCycleError¶
- exception client.RedirectCycleError¶
Исключение
RedirectCycleErrorвызывается, если тестовый клиент определил циклическое перенаправление или очень длинную цепочку перенаправлений.
Исключения Python¶
Django вызывает встроенные исключения Python когда это требуется. Обратитесь к документации Python для получения более подробной информации bltin-exceptions.