Исключения 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] -
EmptyResultSetможет быть поднято во время генерации запроса, если запрос не вернёт никаких результатов. Большинство проектов 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включают:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSent
Если исключение
SuspiciousOperationдостигает уровня обработчика 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.
Исключения 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.0/ref/exceptions/