Django 异常¶
Django 抛出一些它自己的异常以及标准的 Python 异常。
Django核心异常¶
Django 核心异常类定义在 django.core.exceptions
中。
AppRegistryNotReady
¶
ObjectDoesNotExist
¶
- exception ObjectDoesNotExist[source]¶
Model.DoesNotExist
异常的基类。针对ObjectDoesNotExist
的try/except
将捕获所有模型的DoesNotExist
异常。参见
get()
。
EmptyResultSet
¶
FullResultSet
¶
FieldDoesNotExist
¶
MultipleObjectsReturned
¶
- exception MultipleObjectsReturned[source]¶
Model.MultipleObjectsReturned
异常的基类。针对MultipleObjectsReturned
的try/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 代码对这些类的实现具有保证的通用性。
Django对数据库异常的包装与底层数据库异常的行为完全相同。有关更多信息,请参见PEP 249,Python数据库API规范v2.0。
根据PEP 3134,使用原始(底层)数据库异常设置__cause__
属性,从而可以访问提供的任何其他信息。
- exception models.ProtectedError¶
使用django.db.models.PROTECT
时,引发此异常以防止删除引用的对象。models.ProtectedError
是IntegrityError
的子类。
- 异常 models.RestrictedError¶
使用django.db.models.RESTRICT
时,为了防止删除被引用的对象而引发的异常。models.RestrictedError
是IntegrityError
的子类。
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 文档。