Django 异常¶
Django 会引发一些自身的异常以及标准 Python 异常。
Django 核心异常¶
Django 核心异常类在 django.core.exceptions
中定义。
ObjectDoesNotExist
¶
-
exception
ObjectDoesNotExist
[source]¶ 用于
Model.DoesNotExist
异常的基本类。用于ObjectDoesNotExist
的try/except
将捕获所有模型的DoesNotExist
异常。请参阅
get()
。
EmptyResultSet
¶
FullResultSet
¶
如果查询将匹配所有内容,则在查询生成期间可能会引发 FullResultSet
。大多数 Django 项目不会遇到此异常,但它可能对实现自定义查找和表达式有用。
FieldDoesNotExist
¶
MultipleObjectsReturned
¶
-
异常
MultipleObjectsReturned
[源代码]¶ Model.MultipleObjectsReturned
异常的基本类。针对MultipleObjectsReturned
的try/except
将捕获所有模型的MultipleObjectsReturned
异常。请参阅
get()
。
SuspiciousOperation
¶
-
异常
SuspiciousOperation
[源代码]¶ SuspiciousOperation
异常在用户执行从安全角度来看应被视为可疑的操作时引发,例如篡改会话 cookie。SuspiciousOperation
的子类包括DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
TooManyFilesSent
如果
SuspiciousOperation
异常到达 ASGI/WSGI 处理程序级别,它将在Error
级别记录,并导致HttpResponseBadRequest
。有关更多信息,请参阅 日志记录文档。
SuspiciousOperation
在提交的文件过多时引发。
PermissionDenied
¶
-
exception
PermissionDenied
[source]¶ PermissionDenied
异常在用户没有权限执行请求的操作时引发。
ViewDoesNotExist
¶
-
exception
ViewDoesNotExist
[source]¶ ViewDoesNotExist
异常由django.urls
在请求的视图不存在时引发。
MiddlewareNotUsed
¶
-
exception
MiddlewareNotUsed
[source]¶ MiddlewareNotUsed
异常在服务器配置中未使用中间件时引发。
字段错误
¶
验证错误
¶
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 代码保证对这些类的通用实现。
用于数据库异常的 Django 包装器与底层数据库异常的行为完全相同。有关详细信息,请参阅 PEP 249,即 Python 数据库 API 规范 v2.0。
根据 PEP 3134,__cause__
属性已设置为原始(底层)数据库异常,允许访问提供的任何附加信息。
-
exception
models.
ProtectedError
¶
在使用 django.db.models.PROTECT
时引发,以防止删除引用的对象。models.ProtectedError
是 IntegrityError
的子类。
-
exception
models.
RestrictedError
¶
在使用 django.db.models.RESTRICT
时引发,以防止删除引用的对象。models.RestrictedError
是 IntegrityError
的子类。
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
在测试客户端检测到循环或过长的重定向链时引发。