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]

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

FieldDoesNotExist

exception FieldDoesNotExist[source]

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

MultipleObjectsReturned

exception MultipleObjectsReturned[source]

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

参见 get()

SuspiciousOperation

exception SuspiciousOperation[source]

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

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

  • TooManyFilesSent

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

PermissionDenied

exception PermissionDenied[source]

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

ViewDoesNotExist

exception ViewDoesNotExist[source]

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

MiddlewareNotUsed

exception MiddlewareNotUsed[source]

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

ImproperlyConfigured

exception ImproperlyConfigured[source]

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

FieldError

exception FieldError[source]

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

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

  • 排序导致无限循环

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

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

  • 不允许对指定的字段进行连接

  • 字段名称无效

  • 查询包含无效的 order_by 参数

ValidationError

exception ValidationError[source]

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

NON_FIELD_ERRORS

NON_FIELD_ERRORS

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

BadRequest

exception BadRequest[source]

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

RequestAborted

exception RequestAborted[source]

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

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

SynchronousOnlyOperation

exception SynchronousOnlyOperation[source]

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

如果您尝试从异步线程调用仅同步的代码,则创建一个同步线程并在其中调用它。您可以使用asgiref.sync.sync_to_async()实现此目的。

URL解析器异常

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

Resolver404

exception Resolver404[source]

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

NoReverseMatch

exception NoReverseMatch[source]

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

数据库异常

可以从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的子类。

异常 models.RestrictedError

使用django.db.models.RESTRICT时,为了防止删除被引用的对象而引发的异常。models.RestrictedErrorIntegrityError的子类。

HTTP 异常

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

UnreadablePostError

异常 UnreadablePostError[源代码]

当用户取消上传时,会引发UnreadablePostError

会话异常

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

SessionInterrupted

异常 SessionInterrupted[源代码]

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

事务异常

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

TransactionManagementError

异常 TransactionManagementError[源代码]

TransactionManagementError 用于引发与数据库事务相关的任何问题。

测试框架异常

django.test包提供的异常。

RedirectCycleError

异常 client.RedirectCycleError

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

Python 异常

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

返回顶部