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的子类包括:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
如果
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 文档。