Исключения Django
Django поднимает некоторые собственные исключения, а также стандартные исключения Python.
Исключения ядра Django
Классы исключений ядра Django определены в django.core.exceptions.
AppRegistryNotReady
-
exception AppRegistryNotReady[source] -
Это исключение возникает при попытке использовать модели до завершения процесса загрузки приложений, который инициализирует ORM.
ObjectDoesNotExist
-
exception ObjectDoesNotExist[source] -
Базовый класс исключений
Model.DoesNotExist. Обработчик дляtry/exceptпоObjectDoesNotExistперехватит исключенияDoesNotExistдля всех моделей.См.
get().
EmptyResultSet
-
exception EmptyResultSet[source] -
EmptyResultSetможет быть поднято во время генерации запроса, если запрос не вернет никаких результатов. Большинство проектов Django не столкнутся с этим исключением, но оно может быть полезно для реализации пользовательских поисков и выражений.
FullResultSet
-
exception FullResultSet[source] -
FullResultSetможет быть поднято во время генерации запроса, если запрос будет соответствовать всем результатам. Большинство проектов 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возникает, когда пользователь выполнил операцию, которая должна считаться подозрительной с точки зрения безопасности, например, подделку куки сессии. ПодклассыSuspiciousOperationвключают:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
Если исключение
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
Ошибки, которые не относятся к конкретному полю формы или модели, классифицируются как 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[source] -
Исключение
Resolver404генерируется методомresolve(), если путь, переданный вresolve(), не сопоставляется с представлением. Это подклассdjango.http.Http404.
NoReverseMatch
-
exception NoReverseMatch[source] -
Исключение
NoReverseMatchвозникает при использованииdjango.urls, когда URL в вашей конфигурации URL не может быть определён на основе предоставленных параметров.
Исключения базы данных
Исключения базы данных можно импортировать из django.db.
Django оборачивает стандартные исключения базы данных, чтобы ваш код Django гарантированно имел общее реализацию этих классов.
-
exception Error[source]
-
exception InterfaceError[source]
-
exception DatabaseError[source]
-
exception DataError[source]
-
exception OperationalError[source]
-
exception IntegrityError[source]
-
exception InternalError[source]
-
exception ProgrammingError[source]
-
exception NotSupportedError[source]
Оборачивающие классы 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[source] -
UnreadablePostErrorвозникает, когда пользователь отменяет загрузку.
Исключения сессий
Исключения сессий определены в django.contrib.sessions.exceptions.
SessionInterrupted
-
exception SessionInterrupted[source] -
SessionInterruptedвозникает, когда сессия уничтожается в одновременном запросе. Это подклассBadRequest.
Исключения транзакций
Исключения транзакций определены в django.db.transaction.
TransactionManagementError
-
exception TransactionManagementError[source] -
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.2/ref/exceptions/