Django引发了自己的一些异常以及标准的python异常。
Django核心异常类在中定义 django.core.exceptions .
AppRegistryNotReady¶尝试在 app loading process 初始化ORM的操作已完成。
ObjectDoesNotExist¶的基类 Model.DoesNotExist 例外.一 try/except 为 ObjectDoesNotExist 会抓住 DoesNotExist 所有型号的例外。
看见 get() 。
ObjectNotUpdated¶的基类 Model.NotUpdated 例外.一 try/except 为 ObjectNotUpdated 会抓住 NotUpdated 所有型号的例外。
看到 save() .
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 .
5月 28, 2025