Spec-Zone.ru › Django 6.0

Исключения Django

Django вызывает некоторые собственные исключения, а также стандартные исключения Python.

Основные исключения Django

Классы основных исключений Django определены в django.core.exceptions.

AppRegistryNotReady

exception AppRegistryNotReady [исходный код]

Это исключение вызывается при попытке использовать модели до завершения процесса загрузки приложений, который инициализирует ORM.

ObjectDoesNotExist

exception ObjectDoesNotExist [исходный код]

Базовый класс для исключений Model.DoesNotExist. try/except для ObjectDoesNotExist перехватит исключения DoesNotExist для всех моделей.

См. get().

ObjectNotUpdated

Добавлено в Django 6.0.
exception ObjectNotUpdated [исходный код]

Базовый класс для исключений Model.NotUpdated. try/except для ObjectNotUpdated перехватит исключения NotUpdated для всех моделей.

См. save().

EmptyResultSet

exception EmptyResultSet [исходный код]

EmptyResultSet может быть вызвано при генерации запроса, если запрос не вернёт ни одного результата. Большинство проектов Django не столкнутся с этим исключением, однако оно может быть полезно при реализации пользовательских условий поиска и выражений.

FullResultSet

exception FullResultSet [исходный код]

FullResultSet может быть вызвано при генерации запроса, если запрос соответствует всем записям. Большинство проектов Django не столкнутся с этим исключением, однако оно может быть полезно при реализации пользовательских условий поиска и выражений.

FieldDoesNotExist

exception FieldDoesNotExist [исходный код]

Исключение FieldDoesNotExist вызывается методом _meta.get_field() модели, если запрошенное поле отсутствует в модели или её родительских моделях.

MultipleObjectsReturned

exception MultipleObjectsReturned [исходный код]

Базовый класс для исключений Model.MultipleObjectsReturned. try/except для MultipleObjectsReturned перехватит исключения MultipleObjectsReturned для всех моделей.

См. get().

SuspiciousOperation

exception SuspiciousOperation [исходный код]

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

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

Если исключение SuspiciousOperation достигает уровня обработчика ASGI/WSGI, оно записывается в журнал с уровнем Error и приводит к ответу HttpResponseBadRequest. Дополнительные сведения см. в документации по ведению журналов.

PermissionDenied

exception PermissionDenied [исходный код]

Исключение PermissionDenied вызывается, когда у пользователя нет разрешения на выполнение запрошенного действия.

ViewDoesNotExist

exception ViewDoesNotExist [исходный код]

Исключение ViewDoesNotExist вызывается модулем django.urls, если запрошенное представление не существует.

MiddlewareNotUsed

exception MiddlewareNotUsed [исходный код]

Исключение MiddlewareNotUsed вызывается, когда промежуточное ПО не используется в конфигурации сервера.

ImproperlyConfigured

exception ImproperlyConfigured [исходный код]

Исключение ImproperlyConfigured вызывается, если конфигурация Django некорректна — например, если значение в settings.py задано неправильно или не может быть разобрано.

FieldError

exception FieldError [исходный код]

Исключение FieldError вызывается при возникновении проблемы с полем модели. Это может произойти по нескольким причинам:

  • Поле модели конфликтует с полем с таким же именем из абстрактного базового класса
  • При сортировке возникает бесконечный цикл
  • Не удаётся разобрать ключевое слово из параметров фильтра
  • Не удаётся определить поле по ключевому слову в параметрах запроса
  • Для указанного поля не разрешено соединение
  • Недопустимое имя поля
  • Запрос содержит недопустимые аргументы order_by

ValidationError

exception ValidationError [исходный код]

Исключение ValidationError вызывается, если данные не проходят проверку формы или поля модели. Дополнительные сведения о проверке см. в разделах Проверка форм и полей, Проверка полей модели и Справочник по валидаторам.

NON_FIELD_ERRORS

NON_FIELD_ERRORS

ValidationErrors, не относящиеся к определённому полю формы или модели, классифицируются как NON_FIELD_ERRORS. Эта константа используется в качестве ключа в словарях, где для остальных ключей указаны соответствующие списки ошибок полей.

BadRequest

exception BadRequest [исходный код]

Исключение BadRequest вызывается, если запрос невозможно обработать из-за ошибки клиента. Если исключение BadRequest достигает уровня обработчика ASGI/WSGI, оно приводит к ответу HttpResponseBadRequest.

RequestAborted

exception RequestAborted [исходный код]

Исключение RequestAborted вызывается, когда считываемое обработчиком тело HTTP-запроса обрывается на полпути и соединение с клиентом закрывается либо когда клиент не отправляет данные и срабатывает тайм-аут, после которого сервер закрывает соединение.

Это внутреннее исключение модулей обработчика HTTP, и вряд ли вы встретите его где-либо ещё. Если вы изменяете код обработки HTTP, вызывайте это исключение при обнаружении прерванного запроса, чтобы гарантировать корректное закрытие сокета.

SynchronousOnlyOperation

exception SynchronousOnlyOperation [исходный код]

Исключение 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 версии 2.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 [исходный код]

Исключение 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/6.0/ref/exceptions/

Spec-Zone.ru

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