django 1.8 官方文档翻译:6-3 Django异常

时间:2022-02-07 05:46:39

Django异常

DJango会抛出一些它自己的异常,以及Python的标准异常。

Django核心异常

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

ObjectDoesNotExist

exception ObjectDoesNotExist[source]

DoesNotExist异常的基类;对ObjectDoesNotExisttry/except会为所有模型捕获到所有DoesNotExist 异常。

ObjectDoesNotExistDoesNotExist的更多信息请见 get()

FieldDoesNotExist

exception FieldDoesNotExist[source]

当被请求的字段在模型或模型的父类中不存在时,FieldDoesNotExist异常由模型的 _meta.get_field()方法抛出。

Changed in Django 1.8:

之前的版本中,异常只在django.db.models.fields中定义,并不是公共API的一部分。

MultipleObjectsReturned

exception MultipleObjectsReturned[source]

MultipleObjectsReturned异常由查询产生,当预期只有一个对象,但是有多个对象返回的时候。这个异常的一个基础版本在django.core.exceptions中提供。每个模型类都包含一个它的子类版本,它可以用于定义返回多个对象的特定的对象类型。

详见get()

SuspiciousOperation

exception SuspiciousOperation[source]

当用户进行的操作在安全方面可疑的时候,抛出SuspiciousOperation异常,例如篡改会话cookie。SuspiciousOperation的子类包括:

  • DisallowedHost
  • DisallowedModelAdminLookup
  • DisallowedModelAdminToField
  • DisallowedRedirect
  • InvalidSessionKey
  • SuspiciousFileOperation
  • SuspiciousMultipartForm
  • SuspiciousSession

如果SuspiciousOperation异常到达了WSGI处理器层,它会在Error层记录,并导致HttpResponseBadRequest异常。
详见日志文档

PermissionDenied

exception PermissionDenied[source]

PermissionDenied异常当用户不被允许来执行请求的操作时产生。

ViewDoesNotExist

exception ViewDoesNotExist[source]

当所请求的视图不存在时,ViewDoesNotExist 异常由 django.core.urlresolvers产生。

MiddlewareNotUsed

exception MiddlewareNotUsed[source]

当中间件没有在服务器配置中出现时,产生MiddlewareNotUsed异常。

ImproperlyConfigured

exception ImproperlyConfigured[source]

DJango配置不当时产生ImproperlyConfigured异常 – 例如,settings.py中的值不正确或者不可解析。

FieldError

exception FieldError[source]

FieldError异常当模型字段上出现问题时产生。它会由以下原因造成:

  • 模型中的字段与抽象基类中相同名称的字段冲突。
  • 排序造成了一个死循环。
  • 关键词不能由过滤器参数解析。
  • 字段不能由查询参数中的关键词决定。
  • 连接(join)不能在指定对象上使用。
  • 字段名称不可用。
  • 查询包含了无效的 order_by参数。

ValidationError

exception ValidationError[source]

当表单或模型字段验证失败时抛出ValidationError异常。关于验证的更多信息,请见表单字段验证, 模型字段验证验证器参考

NON_FIELD_ERRORS

NON_FIELD_ERRORS

在表单或者模型中不属于特定字段的ValidationError 被归类为NON_FIELD_ERRORS。This constant is used as a key in dictionaries that otherwise map fields to their respective list of errors.

URL解析器异常

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

Resolver404

exception Resolver404[source]

当向 resolve() 传递的路径不映射到视图的时候,Resolver404异常由django.core.urlresolvers.resolve()产生。 它是 django.http.Http404的子类。

NoReverseMatch

exception NoReverseMatch[source]

当你的URLconf中的一个匹配的URL不能基于提供的参数识别时,NoReverseMatch 异常由 django.core.urlresolvers 产生。

Database Exceptions

数据库异常由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__属性会在原生(底层)的数据库异常中设置,允许访问所提供的任何附加信息。(注意这一属性在Python 2和 3下面都可用,虽然 PEP 3134通常只用于Python 3。)

exception models.``ProtectedError

使用django.db.models.PROTECT时,抛出异常来阻止所引用对象的删除。models.ProtectedError is a subclass of IntegrityError.

Http异常

HTTP异常由django.http导入。

UnreadablePostError

exception UnreadablePostError

用户取消上传时抛出UnreadablePostError异常。

事务异常

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

TransactionManagementError

exception TransactionManagementError[source]

对于数据库事务相关的任何问题,抛出TransactionManagementError异常。

测试框架异常

由DJango django.test 包提供的异常。

RedirectCycleError

exception client.``RedirectCycleError

New in Django 1.8.

当测试客户端检测到重定向的循环或者过长的链时,抛出RedirectCycleError异常。

Python异常

Django在适当的时候也会抛出Python的内建异常。进一步的信息请见内建的异常的Python文档。

译者:Django 文档协作翻译小组,原文:Overview

本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。