Django例外

Django引发了自己的一些异常以及标准的python异常。

Django核心异常

Django核心异常类在中定义 django.core.exceptions .

AppRegistryNotReady

exception AppRegistryNotReady[源代码]

尝试在 app loading process 初始化ORM的操作已完成。

ObjectDoesNotExist

exception ObjectDoesNotExist[源代码]

的基类 Model.DoesNotExist 例外情况。A try/except 对于 ObjectDoesNotExist 会抓住 DoesNotExist 所有型号的例外情况。

get() .

EmptyResultSet

exception EmptyResultSet[源代码]

EmptyResultSet 如果查询不返回任何结果,则可能在生成查询期间引发。大多数Django项目不会遇到这个异常,但它可能对实现自定义查找和表达式很有用。

FullResultSet

exception FullResultSet[源代码]

FullResultSet 如果查询将匹配所有内容,则可能在查询生成过程中引发。大多数Django项目不会遇到这个异常,但它对于实现定制查找和表达式可能很有用。

FieldDoesNotExist

exception FieldDoesNotExist[源代码]

这个 FieldDoesNotExist 异常由模型的引发 _meta.get_field() 方法,当模型或模型的父级上不存在请求的字段时。

MultipleObjectsReturned

exception MultipleObjectsReturned[源代码]

的基类 Model.MultipleObjectsReturned 例外情况。A try/except 对于 MultipleObjectsReturned 会抓住 MultipleObjectsReturned 所有型号的例外情况。

get() .

SuspiciousOperation

exception SuspiciousOperation[源代码]

这个 SuspiciousOperation 当用户执行的操作从安全角度来看应被视为可疑操作(例如篡改会话cookie)时,会引发异常。亚类 SuspiciousOperation 包括:

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

  • TooManyFilesSent

如果A SuspiciousOperation 异常到达ASGI/WSGI处理程序级别,它记录在 Error 级别和结果 HttpResponseBadRequest . 见 logging documentation 更多信息。

PermissionDenied

exception PermissionDenied[源代码]

这个 PermissionDenied 当用户没有执行所请求操作的权限时引发异常。

ViewDoesNotExist

exception ViewDoesNotExist[源代码]

这个 ViewDoesNotExist 异常由引发 django.urls 当请求的视图不存在时。

MiddlewareNotUsed

exception MiddlewareNotUsed[源代码]

这个 MiddlewareNotUsed 服务器配置中未使用中间件时引发异常。

ImproperlyConfigured

exception ImproperlyConfigured[源代码]

这个 ImproperlyConfigured 当Django配置不正确时引发异常——例如,如果 settings.py 不正确或不可分析。

FieldError

exception FieldError[源代码]

这个 FieldError 当模型字段有问题时引发异常。这可能是由于以下几个原因造成的:

  • 模型中的字段与抽象基类中同名的字段冲突

  • 无限循环是由排序引起的

  • 无法从筛选器参数分析关键字

  • 无法从查询参数中的关键字确定字段

  • 指定字段上不允许联接

  • 字段名无效

  • 查询包含无效的按参数排序

ValidationError

exception ValidationError[源代码]

这个 ValidationError 当数据未能通过窗体或模型字段验证时引发异常。有关验证的详细信息,请参阅 Form and Field ValidationModel Field Validation 以及 Validator Reference .

NON_FIELD_ERRORS

NON_FIELD_ERRORS

ValidationError 在窗体或模型中不属于特定字段的被分类为 NON_FIELD_ERRORS . 此常量在字典中用作键,否则将字段映射到它们各自的错误列表中。

BadRequest

exception BadRequest[源代码]

这个 BadRequest 由于客户端错误而无法处理请求时引发异常。如果 BadRequest 异常达到ASGI/WSGI处理程序级别,它将导致 HttpResponseBadRequest .

RequestAborted

exception RequestAborted[源代码]

这个 RequestAborted 当处理程序正在读入的HTTP正文在中途被切断并且客户端连接关闭时,或者当客户端不发送数据并且遇到服务器关闭连接的超时时,将引发异常。

它是HTTP处理程序模块内部的,您不太可能在其他地方看到它。如果您正在修改HTTP处理代码,当您遇到中止的请求时,应该引发这个问题,以确保套接字被干净地关闭。

SynchronousOnlyOperation

exception SynchronousOnlyOperation[源代码]

这个 SynchronousOnlyOperation 当从异步上下文(具有正在运行的异步事件循环的线程)调用仅在同步Python代码中允许的代码时,将引发异常。Django的这些部分通常严重依赖线程安全来运行,并且在共享同一线程的协程下不能正常工作。

如果您试图从异步线程调用同步的代码,那么创建一个同步线程并在其中调用它。你可以用 asgiref.sync.sync_to_async() .

URL冲突解决程序异常

在中定义了URL冲突解决程序异常 django.urls .

Resolver404

exception Resolver404[源代码]

这个 Resolver404 异常由引发 resolve() 如果路径传递到 resolve() 不映射到视图。它是 django.http.Http404 .

NoReverseMatch

exception NoReverseMatch[源代码]

这个 NoReverseMatch 异常由引发 django.urls 当无法根据提供的参数标识URLCONF中的匹配URL时。

数据库异常

数据库异常可以从导入 django.db .

Django包装标准数据库异常,以便Django代码具有这些类的保证公共实现。

exception Error[源代码]
exception InterfaceError[源代码]
exception DatabaseError[源代码]
exception DataError[源代码]
exception OperationalError[源代码]
exception IntegrityError[源代码]
exception InternalError[源代码]
exception ProgrammingError[源代码]
exception NotSupportedError[源代码]

数据库异常的django包装器与基础数据库异常的行为完全相同。见 PEP 249 python数据库API规范v2.0,了解更多信息。

按照 PEP 3134 ,A __cause__ 属性设置为原始(基础)数据库异常,允许访问提供的任何其他信息。

exception models.ProtectedError

引发以防止在使用时删除引用的对象 django.db.models.PROTECT . models.ProtectedError 是的子类 IntegrityError .

exception models.RestrictedError

引发以防止在使用时删除引用的对象 django.db.models.RESTRICT . models.RestrictedError 是的子类 IntegrityError .

HTTP异常

可以从以下位置导入HTTP例外 django.http

UnreadablePostError

exception UnreadablePostError[源代码]

UnreadablePostError 当用户取消上载时引发。

会话异常

会话异常在中定义 django.contrib.sessions.exceptions .

SessionInterrupted

exception SessionInterrupted[源代码]

SessionInterrupted 在并发请求中销毁会话时引发。它是 BadRequest .

交易异常

在中定义了事务异常 django.db.transaction .

TransactionManagementError

exception TransactionManagementError[源代码]

TransactionManagementError 针对与数据库事务相关的任何和所有问题提出。

测试框架异常

例外情况由 django.test 包。

RedirectCycleError

exception client.RedirectCycleError

RedirectCycleError 当测试客户端检测到循环或过长的重定向链时引发。

python异常

Django在适当的时候也会引发内置的python异常。有关 Built-in Exceptions .