Django引发了自己的一些异常以及标准的python异常。
Django核心异常类在中定义 django.core.exceptions
.
AppRegistryNotReady
¶尝试在 app loading process 初始化ORM的操作已完成。
ObjectDoesNotExist
¶的基类 Model.DoesNotExist
例外.一 try/except
为 ObjectDoesNotExist
会抓住 DoesNotExist
所有型号的例外。
看见 get()
。
EmptyResultSet
¶FullResultSet
¶FieldDoesNotExist
¶MultipleObjectsReturned
¶的基类 Model.MultipleObjectsReturned
例外.一 try/except
为 MultipleObjectsReturned
会抓住 MultipleObjectsReturned
所有型号的例外。
看见 get()
。
SuspiciousOperation
¶这个 SuspiciousOperation
当用户执行的操作从安全角度来看应被视为可疑操作(例如篡改会话cookie)时,会引发异常。亚类 SuspiciousOperation
包括:
DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
TooManyFilesSent
如果一个 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 .
7月 22, 2024