Исключения 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 не столкнутся с этим исключением, но оно может быть полезным для реализации пользовательских поисков и выражений.
FullResultSet
-
exception FullResultSet[source]
FullResultSet может быть поднято во время генерации запроса, если запрос будет соответствовать всему. Большинство проектов Django не столкнутся с этим исключением, но оно может быть полезным для реализации пользовательских поисков и выражений.
FieldDoesNotExist
-
exception FieldDoesNotExist[source] -
Исключение
FieldDoesNotExistвозникает при вызове метода_meta.get_field()модели, когда запрашиваемого поля нет в модели или в родительских моделях.
MultipleObjectsReturned
-
exception MultipleObjectsReturned[source] -
Базовый класс исключений
Model.MultipleObjectsReturned. Обработка исключенийMultipleObjectsReturnedдля всех моделей может быть осуществлена с помощьюtry/exceptдляMultipleObjectsReturned.См.
get().
SuspiciousOperation
-
exception SuspiciousOperation[source] -
Исключение
SuspiciousOperationвозникает, когда пользователь выполняет операцию, которая считается подозрительной с точки зрения безопасности, например, подмена куки сессии. ПодклассыSuspiciousOperationвключают:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
Если исключение
SuspiciousOperationдостигает уровня обработчика ASGI/WSGI, оно регистрируется на уровнеErrorи приводит кHttpResponseBadRequest. Для получения дополнительной информации см. документацию по регистрации.
SuspiciousOperation возникает, когда отправлено слишком много файлов.
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] -
Исключение
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 в вашей конфигурации 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 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] -
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/4.2/ref/exceptions/