Исключения 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. ИсключениеMultipleObjectsReturnedдля всех моделей можно перехватить с помощьюtry/exceptдля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. Эта константа используется в качестве ключа в словарях, которые в противном случае сопоставляют поля со списком их ошибок.
RequestAborted
-
exception RequestAborted[source] -
Новое в Django 3.0.
Исключение
RequestAbortedвозникает, когда тело HTTP, которое считывается обработчиком, прерывается на середине потока, а клиентское соединение закрывается, или когда клиент не отправляет данные и срабатывает таймаут, при котором сервер закрывает соединение.Это внутреннее исключение модулей обработки HTTP, и вы вряд ли увидите его где-то еще. Если вы изменяете код обработки HTTP, вы должны генерировать это исключение при обнаружении прерванного запроса, чтобы убедиться, что сокет закрывается корректно.
SynchronousOnlyOperation
-
exception SynchronousOnlyOperation[source] -
Новое в Django 3.0.
Исключение
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.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.1/ref/exceptions/