Django异常
DJango会抛出一些它自己的异常,以及Python的标准异常。
Django核心异常
Django核心异常类定义在django.core.exceptions
中。
ObjectDoesNotExist
exception ObjectDoesNotExist
[source]
DoesNotExist
异常的基类;对ObjectDoesNotExist
的try/except
会为所有模型捕获到所有DoesNotExist
异常。
ObjectDoesNotExist
和 DoesNotExist
的更多信息请见 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。