Django 异常

Django 会引发一些自身的异常以及标准 Python 异常。

Django 核心异常

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

AppRegistryNotReady

exception AppRegistryNotReady[source]

应用加载过程(它初始化 ORM)完成之前尝试使用模型时,会引发此异常。

ObjectDoesNotExist

exception ObjectDoesNotExist[source]

用于 Model.DoesNotExist 异常的基本类。用于 ObjectDoesNotExisttry/except 将捕获所有模型的 DoesNotExist 异常。

请参阅 get()

EmptyResultSet

exception EmptyResultSet[source]

如果查询不会返回任何结果,则在查询生成期间可能会引发 EmptyResultSet。大多数 Django 项目不会遇到此异常,但它可能对实现自定义查找和表达式有用。

FullResultSet

exception FullResultSet[source]
Django 4.2 中的新增功能

如果查询将匹配所有内容,则在查询生成期间可能会引发 FullResultSet。大多数 Django 项目不会遇到此异常,但它可能对实现自定义查找和表达式有用。

FieldDoesNotExist

异常 FieldDoesNotExist[源代码]

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

MultipleObjectsReturned

异常 MultipleObjectsReturned[源代码]

Model.MultipleObjectsReturned 异常的基本类。针对 MultipleObjectsReturnedtry/except 将捕获所有模型的 MultipleObjectsReturned 异常。

请参阅 get()

SuspiciousOperation

异常 SuspiciousOperation[源代码]

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

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

如果 SuspiciousOperation 异常到达 ASGI/WSGI 处理程序级别,它将在 Error 级别记录,并导致 HttpResponseBadRequest。有关更多信息,请参阅 日志记录文档

在 Django 3.2.18 中更改

SuspiciousOperation 在提交的文件过多时引发。

PermissionDenied

exception PermissionDenied[source]

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

ViewDoesNotExist

exception ViewDoesNotExist[source]

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

MiddlewareNotUsed

exception MiddlewareNotUsed[source]

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

ImproperlyConfigured

异常 配置不当[源代码]

配置不当 异常在 Django 配置不当时引发,例如,settings.py 中的值不正确或无法解析时。

字段错误

异常 字段错误[源代码]

字段错误 异常在模型字段出现问题时引发。这可能由于以下几个原因:

  • 模型中的字段与抽象基类的同名字段冲突
  • 排序导致无限循环
  • 无法从过滤器参数解析关键字
  • 无法从查询参数中的关键字确定字段
  • 不允许在指定字段上进行联接
  • 字段名称无效
  • 查询包含无效的 order_by 参数

验证错误

异常 验证错误[源代码]

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

NON_FIELD_ERRORS

NON_FIELD_ERRORS

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

BadRequest

exception BadRequest[source]

当由于客户端错误而无法处理请求时,会引发 BadRequest 异常。如果 BadRequest 异常达到 ASGI/WSGI 处理程序级别,则会导致 HttpResponseBadRequest

RequestAborted

exception RequestAborted[source]

RequestAborted 异常在处理程序读取的 HTTP 正文中途中断且客户端连接关闭时引发,或者当客户端不发送数据并达到服务器关闭连接的超时时间时引发。

它属于 HTTP 处理程序模块内部,您不太可能在其他地方看到它。如果您正在修改 HTTP 处理代码,则在遇到中止的请求时应引发此异常,以确保套接字已正确关闭。

SynchronousOnlyOperation

exception SynchronousOnlyOperation[source]

SynchronousOnlyOperation 异常在仅允许在同步 Python 代码中使用的代码从异步上下文中(具有正在运行的异步事件循环的线程)调用时引发。Django 的这些部分通常严重依赖于线程安全性才能正常工作,并且在共享同一线程的协程下无法正常工作。

如果您尝试从异步线程调用仅同步的代码,请创建一个同步线程并在其中调用它。您可以使用 asgiref.sync.sync_to_async() 来完成此操作。

URL 解析器异常

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

Resolver404

异常 Resolver404

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

NoReverseMatch

异常 NoReverseMatch

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

数据库异常

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

Django 封装了标准数据库异常,以便你的 Django 代码保证对这些类的通用实现。

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

用于数据库异常的 Django 包装器与底层数据库异常的行为完全相同。有关详细信息,请参阅 PEP 249,即 Python 数据库 API 规范 v2.0。

根据 PEP 3134__cause__ 属性已设置为原始(底层)数据库异常,允许访问提供的任何附加信息。

exception models.ProtectedError

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

exception models.RestrictedError

在使用 django.db.models.RESTRICT 时引发,以防止删除引用的对象。models.RestrictedErrorIntegrityError 的子类。

HTTP 异常

HTTP 异常可从 django.http 导入。

UnreadablePostError

exception UnreadablePostError

UnreadablePostError在用户取消上传时引发。

会话异常

会话异常在 django.contrib.sessions.exceptions 中定义。

SessionInterrupted

异常 SessionInterrupted[源代码]

SessionInterrupted在并发请求中销毁会话时引发。它是 BadRequest 的子类。

事务异常

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

TransactionManagementError

异常 TransactionManagementError[源代码]

TransactionManagementError针对与数据库事务相关的所有问题引发。

测试框架异常

django.test 包提供的异常。

RedirectCycleError

exception client.RedirectCycleError

RedirectCycleError 在测试客户端检测到循环或过长的重定向链时引发。

Python 异常

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

返回顶部