Skip to main content

Django异常

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

Django核心异常

Django核心异常类在 django.core.exceptions 中定义。

AppRegistryNotReady

exception AppRegistryNotReady[源代码]

在尝试在初始化ORM的 应用加载过程 完成之前使用模型时引发此异常。

ObjectDoesNotExist

exception ObjectDoesNotExist[源代码]

DoesNotExist 异常的基类; ObjectDoesNotExisttry/except 将针对所有型号捕获 DoesNotExist 例外。

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

FieldDoesNotExist

exception FieldDoesNotExist[源代码]

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

MultipleObjectsReturned

exception MultipleObjectsReturned[源代码]

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

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

SuspiciousOperation

exception SuspiciousOperation[源代码]

当用户执行了从安全角度来看应当被视为可疑的操作(例如篡改会话cookie)时,引发 SuspiciousOperation 异常。 SuspiciousOperation 的子类包括:

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

如果 SuspiciousOperation 异常到达WSGI处理程序级别,则将其记录在 Error 级别并产生 HttpResponseBadRequest。有关详细信息,请参阅 日志文档

PermissionDenied

exception PermissionDenied[源代码]

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

ViewDoesNotExist

exception ViewDoesNotExist[源代码]

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

MiddlewareNotUsed

exception MiddlewareNotUsed[源代码]

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

ImproperlyConfigured

exception ImproperlyConfigured[源代码]

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

FieldError

exception FieldError[源代码]

当模型字段有问题时,会引发 FieldError 异常。这可能由于以下几个原因:

  • 模型中的字段与抽象基类中具有相同名称的字段冲突

  • 无限循环是由排序引起的

  • 无法从过滤器参数中解析关键字

  • 无法从查询参数中的关键字确定字段

  • 在指定字段上不允许加入

  • 字段名无效

  • 查询包含无效的order_by参数

ValidationError

exception ValidationError[源代码]

当数据在表单或模型字段验证失败时引发 ValidationError 异常。有关验证的更多信息,请参阅 表单和字段验证模型字段验证验证器参考

NON_FIELD_ERRORS

NON_FIELD_ERRORS

不属于表单或模型中的特定字段的 ValidationError 被分类为 NON_FIELD_ERRORS。此常量用作字典中的键,否则将字段映射到其各自的错误列表。

URL解析器异常

URL解析程序异常在 django.urls 中定义。

1.10 版后已移除: 在旧版本中,这些异常位于 django.core.urlresolvers 中。从旧位置导入将继续工作,直到Django 2.0。

Resolver404

exception Resolver404

如果传递给 resolve() 的路径未映射到视图,则 resolve() 引发 Resolver404 异常。它是 django.http.Http404 的子类。

NoReverseMatch

exception NoReverseMatch

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

数据库异常

数据库异常可从 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数据库API规范v2.0。

根据 PEP 3134__cause__ 属性设置与原始(底层)数据库异常,允许访问提供的任何其他信息。 (请注意,此属性在Python 2和Python 3下均可用,但 PEP 3134 通常仅适用于Python 3.为了避免与Python 3出现意外的差异,Django还将确保通过 __cause__ 提供的异常具有可用的 __traceback__ 属性。

Changed in Django 1.10:

添加了上述 __traceback__ 属性。

exception models.ProtectedError

引发时使用 django.db.models.PROTECT 时防止删除引用对象。 models.ProtectedErrorIntegrityError 的一个子类。

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文档。