Исключения Django
Django вызывает некоторые собственные исключения, а также стандартные исключения Python.
Основные исключения Django
Классы основных исключений Django определены в django.core.exceptions.
AppRegistryNotReady
-
exception AppRegistryNotReady[исходный код] -
Это исключение вызывается при попытке использовать модели до завершения процесса загрузки приложений, который инициализирует ORM.
ObjectDoesNotExist
-
exception ObjectDoesNotExist[исходный код] -
Базовый класс для исключений
Model.DoesNotExist.try/exceptдляObjectDoesNotExistперехватит исключенияDoesNotExistдля всех моделей.См.
get().
ObjectNotUpdated
-
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относятся:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
Если исключение
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/