Spec-Zone.ru › Django 3.0

Исключения 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]

EmptyResultSet может быть поднято во время генерации запроса, если запрос не вернёт никаких результатов. Большинство проектов 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

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

RequestAborted

exception RequestAborted [source]
Новое в Django 3.0.

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

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

SynchronousOnlyOperation

exception SynchronousOnlyOperation [source]
Новое в Django 3.0.

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

Исключения HTTP

Исключения HTTP можно импортировать из django.http.

UnreadablePostError

exception UnreadablePostError

UnreadablePostError возникает, когда пользователь отменяет загрузку.

Исключения транзакций

Исключения транзакций определены в 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.0/ref/exceptions/

Spec-Zone.ru

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