Исключения Django¶
Django вызывает некоторые собственные исключения, а также стандартные исключения Python.
Исключения ядра Django¶
Классы исключений ядра Django определены в django.core.exceptions
.
AppRegistryNotReady
¶
-
exception
AppRegistryNotReady
[исходный код]¶ Это исключение возникает при попытке использовать модели до завершения процедуры app loading process, которая инициализирует ORM.
ObjectDoesNotExist
¶
-
exception
ObjectDoesNotExist
[исходный код]¶ Базовый класс для
DoesNotExist
исключений;try/except
дляObjectDoesNotExist
будет ловитьDoesNotExist
исключения для всех моделей.Дополнительную информацию о
get()
иObjectDoesNotExist
смотрите вDoesNotExist
.
EmptyResultSet
¶
-
exception
EmptyResultSet
[исходный код]¶ EmptyResultSet
может возникнуть во время генерации запроса, если запрос не вернет никаких результатов. Большинство проектов Django не столкнутся с этим исключением, но оно может быть полезно для реализации пользовательских поисков и выражений.
FieldDoesNotExist
¶
-
exception
FieldDoesNotExist
[исходный код]¶ Исключение
FieldDoesNotExist
вызывается методом_meta.get_field()
модели, когда запрашиваемое поле не существует ни в модели, ни в родителях модели.
MultipleObjectsReturned
¶
-
exception
MultipleObjectsReturned
[исходный код]¶ Исключение
MultipleObjectsReturned
вызывается запросом, если ожидается только один объект, но возвращается несколько объектов. Базовая версия этого исключения представлена вdjango.core.exceptions
; каждый класс модели содержит подклассифицированную версию, которая может быть использована для идентификации конкретного типа объекта, который вернул несколько объектов.Дополнительную информацию см. в разделе
get()
.
SuspiciousOperation
¶
-
exception
SuspiciousOperation
[исходный код]¶ Исключение
SuspiciousOperation
возникает, когда пользователь выполнил операцию, которую следует считать подозрительной с точки зрения безопасности, например, подделка куки сеанса. ПодклассыSuspiciousOperation
включают:DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
Если исключение
SuspiciousOperation
достигает уровня обработчика WSGI, оно регистрируется на уровнеError
и приводит к возникновениюHttpResponseBadRequest
. Более подробную информацию см. в logging documentation.
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
возникает, когда данные не проходят валидацию полей формы или модели. Подробнее о валидации см. в Form and Field Validation, Model Field Validation и Validator Reference.
Исключения из URL-резольвера¶
Исключения URL Resolver определены в 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, когда это необходимо. Более подробную информацию о Built-in Exceptions смотрите в документации Python.