Spec-Zone.ru › Django 5.2

Исключения 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 включают:

  • DisallowedHost
  • DisallowedModelAdminLookup
  • DisallowedModelAdminToField
  • DisallowedRedirect
  • InvalidSessionKey
  • RequestDataTooBig
  • SuspiciousFileOperation
  • SuspiciousMultipartForm
  • SuspiciousSession
  • TooManyFieldsSent
  • TooManyFilesSent

Если исключение 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API