Spec-Zone.ru › Django 4.0

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

  • 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

Ошибки, которые не относятся к конкретному полю в форме или модели, классифицируются как 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/

Spec-Zone.ru

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