Django 异常 — Django 文档

来自菜鸟教程
Django/docs/3.1.x/ref/exceptions
跳转至:导航、​搜索

Django 异常

Django 会引发一些自己的异常以及标准的 Python 异常。

Django 核心异常

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

AppRegistryNotReady

exception AppRegistryNotReady
在初始化 ORM 的 应用程序加载过程 完成之前尝试使用模型时会引发此异常。


ObjectDoesNotExist

exception ObjectDoesNotExist

Model.DoesNotExist 异常的基类。 ObjectDoesNotExisttry/except 将捕获所有模型的 DoesNotExist 异常。

参见 get()


EmptyResultSet

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


FieldDoesNotExist

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


MultipleObjectsReturned

exception MultipleObjectsReturned

Model.MultipleObjectsReturned 异常的基类。 MultipleObjectsReturnedtry/except 将捕获所有模型的 MultipleObjectsReturned 异常。

参见 get()


SuspiciousOperation

exception SuspiciousOperation

SuspiciousOperation 异常在用户执行了从安全角度应该被视为可疑的操作时引发,例如篡改会话 cookie。 SuspiciousOperation 的子类包括:

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

如果 SuspiciousOperation 异常到达 ASGI/WSGI 处理程序级别,它会在 Error 级别记录并导致 HttpResponseBadRequest。 有关详细信息,请参阅 日志记录文档


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 异常。 发生这种情况的原因有多种:
  • 模型中的字段与抽象基类中的同名字段发生冲突
  • 无限循环是由排序引起的
  • 无法从过滤器参数中解析关键字
  • 无法从查询参数中的关键字确定字段
  • 指定字段不允许连接
  • 字段名称无效
  • 查询包含无效的 order_by 参数


ValidationError

exception ValidationError
ValidationError 异常在数据表单或模型字段验证失败时引发。 有关验证的更多信息,请参阅 表单和字段验证模型字段验证验证器参考

NON_FIELD_ERRORS

NON_FIELD_ERRORS

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


RequestAborted

exception RequestAborted

3.0 版中的新功能。

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

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


SynchronousOnlyOperation

exception SynchronousOnlyOperation

3.0 版中的新功能。

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

如果您尝试从异步线程调用仅同步的代码,则创建一个同步线程并在其中调用它。 您可以使用 asgiref.sync.sync_to_async() 来完成此操作。


URL 解析器异常

URL 解析器异常在 django.urls 中定义。

Resolver404

exception Resolver404
如果传递给 resolve() 的路径未映射到视图,则 Resolver404 异常由 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__cause__ 属性设置为原始(基础)数据库异常,允许访问提供的任何附加信息。

exception models.ProtectedError

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

exception models.RestrictedError

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


Http 异常

可以从 django.http 导入 Http 异常。

UnreadablePostError

exception UnreadablePostError
UnreadablePostError 在用户取消上传时引发。


交易异常

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

TransactionManagementError

exception TransactionManagementError
TransactionManagementError 是针对与数据库事务相关的任何和所有问题引发的。


测试框架异常

django.test 包提供的例外。

RedirectCycleError

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


Python 异常

Django 也会在适当的时候引发内置的 Python 异常。 有关 bltin-exceptions 的更多信息,请参阅 Python 文档。