Исключения 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 не столкнутся с этим исключением, но оно может быть полезно для реализации пользовательских поисков и выражений.
FieldDoesNotExist
-
exception FieldDoesNotExist[source] -
Исключение
FieldDoesNotExistгенерируется методом_meta.get_field()модели, когда запрошенное поле отсутствует в модели или в родительских моделях.
MultipleObjectsReturned
-
exception MultipleObjectsReturned[source] -
Базовый класс исключений
Model.MultipleObjectsReturned. Обработчик исключений дляMultipleObjectsReturnedпоймает исключения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
Ошибки, которые не относятся к конкретному полю в форме или модели, классифицируются как NON_FIELD_ERRORS. Эта константа используется в качестве ключа в словарях, которые в противном случае сопоставляют поля со списком соответствующих ошибок.
BadRequest
-
exception BadRequest[source] -
Добавлен в Django 3.2.
Исключение
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] -
Добавлен в Django 3.2.
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.0/ref/exceptions/