Spec-Zone.ru › Django 3.2

Исключения 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. try/except для MultipleObjectsReturned будет перехватывать исключения MultipleObjectsReturned для всех моделей.

См. get().

SuspiciousOperation

exception SuspiciousOperation [source]

Исключение SuspiciousOperation возникает, когда пользователь выполнил операцию, которая должна считаться подозрительной с точки зрения безопасности, например, вмешательство в cookie сессии. Подклассы SuspiciousOperation включают:

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

Если исключение 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. Эта константа используется в качестве ключа в словарях, в которых в противном случае хранятся поля и их соответствующие списки ошибок.

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/3.2/ref/exceptions/

Spec-Zone.ru

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