Django引发了自己的一些异常以及标准的python异常。
Django核心异常类在中定义 django.core.exceptions
.
AppRegistryNotReady
¶尝试在 app loading process 初始化ORM的操作已完成。
ObjectDoesNotExist
¶的基类 Model.DoesNotExist
例外情况。A try/except
对于 ObjectDoesNotExist
会抓住 DoesNotExist
所有型号的例外情况。
见 get()
.
EmptyResultSet
¶FullResultSet
¶FieldDoesNotExist
¶MultipleObjectsReturned
¶的基类 Model.MultipleObjectsReturned
例外情况。A try/except
对于 MultipleObjectsReturned
会抓住 MultipleObjectsReturned
所有型号的例外情况。
见 get()
.
SuspiciousOperation
¶这个 SuspiciousOperation
当用户执行的操作从安全角度来看应被视为可疑操作(例如篡改会话cookie)时,会引发异常。亚类 SuspiciousOperation
包括:
DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
TooManyFilesSent
如果A SuspiciousOperation
异常到达ASGI/WSGI处理程序级别,它记录在 Error
级别和结果 HttpResponseBadRequest
. 见 logging documentation 更多信息。
PermissionDenied
¶这个 PermissionDenied
当用户没有执行所请求操作的权限时引发异常。
ViewDoesNotExist
¶这个 ViewDoesNotExist
异常由引发 django.urls
当请求的视图不存在时。
MiddlewareNotUsed
¶这个 MiddlewareNotUsed
服务器配置中未使用中间件时引发异常。
ImproperlyConfigured
¶这个 ImproperlyConfigured
当Django配置不正确时引发异常——例如,如果 settings.py
不正确或不可分析。
FieldError
¶这个 FieldError
当模型字段有问题时引发异常。这可能是由于以下几个原因造成的:
模型中的字段与抽象基类中同名的字段冲突
无限循环是由排序引起的
无法从筛选器参数分析关键字
无法从查询参数中的关键字确定字段
指定字段上不允许联接
字段名无效
查询包含无效的按参数排序
ValidationError
¶这个 ValidationError
当数据未能通过窗体或模型字段验证时引发异常。有关验证的详细信息,请参阅 Form and Field Validation , Model Field Validation 以及 Validator Reference .
NON_FIELD_ERRORS
¶ValidationError
在窗体或模型中不属于特定字段的被分类为 NON_FIELD_ERRORS
. 此常量在字典中用作键,否则将字段映射到它们各自的错误列表中。
BadRequest
¶这个 BadRequest
由于客户端错误而无法处理请求时引发异常。如果 BadRequest
异常达到ASGI/WSGI处理程序级别,它将导致 HttpResponseBadRequest
.
RequestAborted
¶这个 RequestAborted
当处理程序正在读入的HTTP正文在中途被切断并且客户端连接关闭时,或者当客户端不发送数据并且遇到服务器关闭连接的超时时,将引发异常。
它是HTTP处理程序模块内部的,您不太可能在其他地方看到它。如果您正在修改HTTP处理代码,当您遇到中止的请求时,应该引发这个问题,以确保套接字被干净地关闭。
SynchronousOnlyOperation
¶这个 SynchronousOnlyOperation
当从异步上下文(具有正在运行的异步事件循环的线程)调用仅在同步Python代码中允许的代码时,将引发异常。Django的这些部分通常严重依赖线程安全来运行,并且在共享同一线程的协程下不能正常工作。
如果您试图从异步线程调用同步的代码,那么创建一个同步线程并在其中调用它。你可以用 asgiref.sync.sync_to_async()
.
在中定义了URL冲突解决程序异常 django.urls
.
Resolver404
¶这个 Resolver404
异常由引发 resolve()
如果路径传递到 resolve()
不映射到视图。它是 django.http.Http404
.
NoReverseMatch
¶这个 NoReverseMatch
异常由引发 django.urls
当无法根据提供的参数标识URLCONF中的匹配URL时。
数据库异常可以从导入 django.db
.
Django包装标准数据库异常,以便Django代码具有这些类的保证公共实现。
数据库异常的django包装器与基础数据库异常的行为完全相同。见 PEP 249 python数据库API规范v2.0,了解更多信息。
按照 PEP 3134 ,A __cause__
属性设置为原始(基础)数据库异常,允许访问提供的任何其他信息。
引发以防止在使用时删除引用的对象 django.db.models.PROTECT
. models.ProtectedError
是的子类 IntegrityError
.
引发以防止在使用时删除引用的对象 django.db.models.RESTRICT
. models.RestrictedError
是的子类 IntegrityError
.
可以从以下位置导入HTTP例外 django.http
。
UnreadablePostError
¶UnreadablePostError
当用户取消上载时引发。
会话异常在中定义 django.contrib.sessions.exceptions
.
SessionInterrupted
¶SessionInterrupted
在并发请求中销毁会话时引发。它是 BadRequest
.
在中定义了事务异常 django.db.transaction
.
TransactionManagementError
¶TransactionManagementError
针对与数据库事务相关的任何和所有问题提出。
例外情况由 django.test
包。
RedirectCycleError
¶RedirectCycleError
当测试客户端检测到循环或过长的重定向链时引发。
Django在适当的时候也会引发内置的python异常。有关 Built-in Exceptions .
12月 18, 2023