Django异常

Django引发了一些自己的异常以及标准的Python异常。

Django核心异常

Django core exception classes are defined in django.core.exceptions.

AppRegistryNotReady

例外 AppRegistryNotReady[source]

在尝试在app loading process之前使用模型(初始化ORM)完成时引发此异常。

ObjectDoesNotExist

例外 ObjectDoesNotExist[source]

The base class for DoesNotExist exceptions; a try/except for ObjectDoesNotExist will catch DoesNotExist exceptions for all models.

有关ObjectDoesNotExistDoesNotExist的更多信息,请参阅get()

EmptyResultSet

例外 EmptyResultSet[source]

EmptyResultSet may be raised during query generation if a query won’t return any results. 大多数Django项目不会遇到这个异常,但是对于实现自定义查找和表达式可能会很有用。

在Django 1.11中更改:

在较早的版本中,只能从django.db.models.sql导入。

FieldDoesNotExist

例外 FieldDoesNotExist[source]

当请求的字段不存在于模型或模型的父项上时,模型的_meta.get_field()方法引发FieldDoesNotExist异常。

MultipleObjectsReturned

例外 MultipleObjectsReturned[source]

如果只有一个对象,但是会返回多个对象,则会引发MultipleObjectsReturned异常。 此异常的基本版本在django.core.exceptions中提供。每个模型类都包含一个可用于标识返回多个对象的特定对象类型的子类版本。

有关更多信息,请参阅get()

SuspiciousOperation

例外 SuspiciousOperation[source]

当用户执行了一个应该被视为可疑的操作(例如篡改会话cookie)时,会引发SuspiciousOperation异常。 SuspiciousOperation的子类包括:

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

如果一个SuspiciousOperation异常达到了WSGI处理程序级别,它会在Error级别上记录并产生一个HttpResponseBadRequest 有关更多信息,请参阅logging documentation

PermissionDenied

例外 PermissionDenied[source]

当用户没有权限执行请求的操作时,会引发PermissionDenied异常。

ViewDoesNotExist

例外 ViewDoesNotExist[source]

当所请求的视图不存在时,ViewDoesNotExist异常由django.urls引发。

MiddlewareNotUsed

例外 MiddlewareNotUsed[source]

当在服务器配置中不使用中间件时引发MiddlewareNotUsed异常。

ImproperlyConfigured

例外 ImproperlyConfigured[source]

当Django以某种方式配置不当时,例如,如果settings.py中的值不正确或不可解析,则会引发ImproperlyConfigured异常。

FieldError

例外 FieldError[source]

当模型字段有问题时引发FieldError异常。 这可能有几个原因:

  • 模型中的字段与来自抽象基类的同名字段发生冲突
  • 一个无限循环是由排序引起的
  • 关键字不能从过滤器参数中分析
  • 查询参数中的关键字无法确定字段
  • 连接不允许在指定的字段上
  • 字段名称无效
  • 查询包含无效的order_by参数

ValidationError

例外 ValidationError[source]

当数据失败表单或模型字段验证时引发ValidationError异常。 有关验证的更多信息,请参见Form and Field ValidationModel Field ValidationValidator Reference

NON_FIELD_ERRORS

NON_FIELD_ERRORS T0> ¶ T1>

ValidationErrors that don’t belong to a particular field in a form or model are classified as NON_FIELD_ERRORS. 这个常量被用作字典中的键,否则将字段映射到它们各自的错误列表。

URL解析器异常

URL解析器例外在django.urls中定义。

Resolver404

例外 Resolver404[source]

The Resolver404 exception is raised by resolve() if the path passed to resolve() doesn’t map to a view. 它是django.http.Http404的一个子类。

NoReverseMatch

例外 NoReverseMatch[source]

当根据提供的参数无法识别URLconf中的匹配URL时,django.urls引发NoReverseMatch异常。

数据库异常

数据库异常可以从django.db导入。

Django包装了标准的数据库异常,这样你的Django代码就可以保证这些类的通用实现。

例外 Error[source]
例外 InterfaceError[source]
例外 DatabaseError[source]
例外 DataError[source]
例外 OperationalError[source]
例外 IntegrityError[source]
例外 InternalError[source]
例外 ProgrammingError[source]
例外 NotSupportedError[source]

用于数据库异常的Django包装与基础数据库异常的行为完全相同。 有关更多信息,请参阅Python数据库API规范v2.0中的 PEP 249

As per PEP 3134, a __cause__ attribute is set with the original (underlying) database exception, allowing access to any additional information provided.

例外 楷模。 ProtectedError T0> ¶ T1>

引发以防止在使用django.db.models.PROTECT时删除引用的对象。 models.ProtectedError is a subclass of IntegrityError.

Http异常

Http异常可以从django.http导入。

UnreadablePostError

例外 UnreadablePostError[source]

UnreadablePostError is raised when a user cancels an upload.

交易异常

事务异常在django.db.transaction中定义。

TransactionManagementError

例外 TransactionManagementError[source]

TransactionManagementError is raised for any and all problems related to database transactions.

测试框架异常

django.test包提供的异常。

RedirectCycleError

例外 客户。 RedirectCycleError T0> ¶ T1>

RedirectCycleError is raised when the test client detects a loop or an overly long chain of redirects.

Python异常

Django也会在适当的时候引发内置的Python异常。 有关Built-in Exceptions的更多信息,请参阅Python文档。