Исключения Django
Django поднимает некоторые собственные исключения, а также стандартные исключения Python.
Исключения ядра Django
Классы исключений ядра Django определены в django.core.exceptions.
AppRegistryNotReady
-
exception AppRegistryNotReady[source] -
Это исключение возникает при попытке использовать модели до завершения процесса загрузки приложений, который инициализирует ORM.
ObjectDoesNotExist
-
exception ObjectDoesNotExist[source] -
Базовый класс исключений
Model.DoesNotExist. Обработка исключенийDoesNotExistдля всех моделей будет осуществлятьсяtry/exceptдляObjectDoesNotExist.См.
get().
EmptyResultSet
-
exception EmptyResultSet[source] -
Может быть поднято во время генерации запроса, если запрос не вернёт результатов. Большинство проектов Django не столкнутся с этим исключением, но оно может быть полезным для реализации пользовательских поисков и выражений.
FieldDoesNotExist
-
exception FieldDoesNotExist[source] -
Исключение
FieldDoesNotExistподнимается методом_meta.get_field()модели, когда запрошенное поле отсутствует в модели или в родительских моделях.
MultipleObjectsReturned
-
exception MultipleObjectsReturned[source] -
Базовый класс исключений
Model.MultipleObjectsReturned.try/exceptдляMultipleObjectsReturnedбудет перехватывать исключенияMultipleObjectsReturnedдля всех моделей.См.
get().
SuspiciousOperation
-
exception SuspiciousOperation[source] -
Исключение
SuspiciousOperationвозникает, когда пользователь выполнил операцию, которая должна считаться подозрительной с точки зрения безопасности, например, вмешательство в cookie сессии. ПодклассыSuspiciousOperationвключают:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSent
Если исключение
SuspiciousOperationдостигает уровня обработчика ASGI/WSGI, оно регистрируется на уровнеErrorи приводит кHttpResponseBadRequest. Дополнительную информацию см. в документации по регистрации.
PermissionDenied
-
exception PermissionDenied[source] -
Исключение
PermissionDeniedвозникает, когда у пользователя нет разрешения выполнить запрашиваемое действие.
ViewDoesNotExist
-
exception ViewDoesNotExist[source] -
Исключение
ViewDoesNotExistвозникает вdjango.urlsпри отсутствии запрошенного представления.
MiddlewareNotUsed
-
exception MiddlewareNotUsed[source] -
Исключение
MiddlewareNotUsedвозникает, когда middleware не используется в конфигурации сервера.
ImproperlyConfigured
-
exception ImproperlyConfigured[source] -
Исключение
ImproperlyConfiguredвозникает, если Django неправильно сконфигурирован, например, если значение вsettings.pyнекорректно или не может быть обработано.
FieldError
-
exception FieldError[source] -
Исключение
FieldErrorвозникает при проблемах с полем модели. Это может произойти по нескольким причинам:- Поле в модели конфликтует с полем с тем же именем из абстрактного базового класса
- Возникает бесконечный цикл из-за сортировки
- Ключевое слово не может быть обработано из параметров фильтра
- Поле не может быть определено из ключевого слова в параметрах запроса
- Соединение не разрешено для указанного поля
- Имя поля некорректно
- Запрос содержит некорректные аргументы order_by
ValidationError
-
exception ValidationError[source] -
Исключение
ValidationErrorвозникает, когда данные не проходят валидацию формы или поля модели. Для получения дополнительной информации о валидации, см. Валидация форм и полей, Валидация полей модели и Справочник по валидаторам.
NON_FIELD_ERRORS
-
NON_FIELD_ERRORS
ValidationError не принадлежащие к конкретному полю в форме или модели, классифицируются как NON_FIELD_ERRORS. Эта константа используется в качестве ключа в словарях, в которых в противном случае хранятся поля и их соответствующие списки ошибок.
BadRequest
-
exception BadRequest[source] -
Новое в Django 3.2.
Исключение
BadRequestвозникает, когда запрос не может быть обработан из-за ошибки клиента. Если исключениеBadRequestдостигает уровня обработчика ASGI/WSGI, это приводит кHttpResponseBadRequest.
RequestAborted
-
exception RequestAborted[source] -
Исключение
RequestAbortedвозникает, когда тело HTTP, которое считывается обработчиком, обрывается на полпути, и клиентское соединение закрывается, или когда клиент не отправляет данные и срабатывает таймаут, при котором сервер закрывает соединение.Это внутреннее исключение модулей обработки HTTP, и вы вряд ли увидите его в другом месте. Если вы изменяете код обработки HTTP, вы должны генерировать это исключение, когда сталкиваетесь с прерванным запросом, чтобы убедиться, что сокет закрывается корректно.
SynchronousOnlyOperation
-
exception SynchronousOnlyOperation[source] -
Исключение
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 в вашем URLconf не может быть определен на основе предоставленных параметров.
Исключения базы данных
Исключения базы данных могут быть импортированы из 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 v2.0.
В соответствии с PEP 3134, устанавливается атрибут __cause__, содержащий исходное (основное) исключение базы данных, предоставляя доступ к любой дополнительной информации.
-
exception models.ProtectedError
Генерируется для предотвращения удаления связанных объектов при использовании django.db.models.PROTECT. models.ProtectedError является подклассом IntegrityError.
-
exception models.RestrictedError
Генерируется для предотвращения удаления связанных объектов при использовании django.db.models.RESTRICT. models.RestrictedError является подклассом IntegrityError.
Исключения HTTP
Исключения HTTP могут быть импортированы из django.http.
UnreadablePostError
-
exception UnreadablePostError -
UnreadablePostErrorгенерируется, когда пользователь отменяет загрузку.
Исключения сессий
Исключения сессий определены в django.contrib.sessions.exceptions.
SessionInterrupted
-
exception SessionInterrupted[source] -
Доступно начиная с Django 3.2.
SessionInterruptedгенерируется, когда сессия уничтожается в одновременном запросе. Это подклассBadRequest.
Исключения транзакций
Исключения транзакций определены в django.db.transaction.
TransactionManagementError
-
exception TransactionManagementError -
TransactionManagementErrorгенерируется при любых проблемах, связанных с базами данных.
Исключения фреймворка тестирования
Исключения, предоставляемые пакетом django.test.
RedirectCycleError
-
exception client.RedirectCycleError -
RedirectCycleErrorгенерируется, когда клиент теста обнаруживает цикл или слишком длинную цепочку редиректов.
Исключения Python
Django также генерирует встроенные исключения Python, когда это уместно. Для получения дополнительной информации об встроенных исключениях обратитесь к документации Python.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/3.2/ref/exceptions/