Исключения Django
Django поднимает некоторые свои собственные исключения, а также стандартные исключения Python.
Исключения ядра Django
Классы исключений ядра Django определены в django.core.exceptions.
AppRegistryNotReady
-
exception AppRegistryNotReady[source] -
Это исключение поднимается при попытке использовать модели до завершения процесса загрузки приложений, который инициализирует ORM.
ObjectDoesNotExist
-
exception ObjectDoesNotExist[source] -
Базовый класс исключений
Model.DoesNotExist. Обработчик исключений дляObjectDoesNotExistпоймает исключенияDoesNotExistдля всех моделей.См.
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поймает исключенияMultipleObjectsReturnedдля всех моделей.См.
get().
SuspiciousOperation
-
exception SuspiciousOperation[source] -
Исключение
SuspiciousOperationподнимается, когда пользователь выполняет операцию, которая должна считаться подозрительной с точки зрения безопасности, например, подмена cookie сессии. Подклассы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 в вашем 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] -
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/5.0/ref/exceptions/