Django 异常 — Django 文档

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

Django 异常

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

Django 核心异常

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

AppRegistryNotReady

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


ObjectDoesNotExist

exception ObjectDoesNotExist

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

有关 ObjectDoesNotExistDoesNotExist 的更多信息,请参阅 get()


EmptyResultSet

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


FieldDoesNotExist

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


MultipleObjectsReturned

exception MultipleObjectsReturned

MultipleObjectsReturned 异常由查询引发,如果只需要一个对象,但返回多个对象。 django.core.exceptions 中提供了此异常的基本版本; 每个模型类都包含一个子类版本,可用于标识已返回多个对象的特定对象类型。

有关更多信息,请参阅 get()


SuspiciousOperation

exception SuspiciousOperation

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

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

如果 SuspiciousOperation 异常到达 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 异常。 发生这种情况的原因有多种:
  • 模型中的一个字段与抽象基类中的同名字段发生冲突
  • 无限循环是由排序引起的
  • 不能从过滤器参数中解析关键字
  • 一个字段不能通过查询参数中的关键字来确定
  • 不允许在指定字段上进行 join
  • 字段名无效
  • 查询包含无效的 order_by 参数


ValidationError

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

NON_FIELD_ERRORS

NON_FIELD_ERRORS

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


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 的子类。


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 文档。