DJango会抛出一些它自己的异常,以及Python的标准异常。
Django核心异常类定义在django.core.exceptions
中。
_exception _ObjectDoesNotExist
source(../_modules/django/core/exceptions.html#ObjectDoesNotExist)
DoesNotExist
异常的基类;对ObjectDoesNotExist
的try/except
会为所有模型捕获到所有DoesNotExist
异常。
ObjectDoesNotExist
和 DoesNotExist
的更多信息请见 get()
。
_exception _FieldDoesNotExist
source(../_modules/django/core/exceptions.html#FieldDoesNotExist)
当被请求的字段在模型或模型的父类中不存在时,FieldDoesNotExist
异常由模型的 _meta.get_field()
方法抛出。
Changed in Django 1.8:
之前的版本中,异常只在django.db.models.fields
中定义,并不是公共API的一部分。
_exception _MultipleObjectsReturned
source(../_modules/django/core/exceptions.html#MultipleObjectsReturned)
MultipleObjectsReturned
异常由查询产生,当预期只有一个对象,但是有多个对象返回的时候。这个异常的一个基础版本在django.core.exceptions
中提供。每个模型类都包含一个它的子类版本,它可以用于定义返回多个对象的特定的对象类型。
详见get()
。
_exception _SuspiciousOperation
source(../_modules/django/core/exceptions.html#SuspiciousOperation)
当用户进行的操作在安全方面可疑的时候,抛出SuspiciousOperation
异常,例如篡改会话cookie。SuspiciousOperation
的子类包括:
DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
如果SuspiciousOperation
异常到达了WSGI处理器层,它会在Error
层记录,并导致HttpResponseBadRequest
异常。 详见日志文档。
_exception _PermissionDenied
source(../_modules/django/core/exceptions.html#PermissionDenied)
PermissionDenied
异常当用户不被允许来执行请求的操作时产生。
_exception _ViewDoesNotExist
source(../_modules/django/core/exceptions.html#ViewDoesNotExist)
当所请求的视图不存在时,ViewDoesNotExist
异常由 django.core.urlresolvers
产生。
_exception _MiddlewareNotUsed
source(../_modules/django/core/exceptions.html#MiddlewareNotUsed)
当中间件没有在服务器配置中出现时,产生MiddlewareNotUsed
异常。
_exception _ImproperlyConfigured
source(../_modules/django/core/exceptions.html#ImproperlyConfigured)
DJango配置不当时产生ImproperlyConfigured
异常 -- 例如,settings.py
中的值不正确或者不可解析。
_exception _FieldError
source(../_modules/django/core/exceptions.html#FieldError)
FieldError
异常当模型字段上出现问题时产生。它会由以下原因造成:
_exception _ValidationError
source(../_modules/django/core/exceptions.html#ValidationError)
当表单或模型字段验证失败时抛出ValidationError
异常。关于验证的更多信息,请见表单字段验证, 模型字段验证 和 验证器参考。
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解析器异常定义在django.core.urlresolvers
中。
_exception _Resolver404
source(../_modules/django/core/urlresolvers.html#Resolver404)
当向 resolve()
传递的路径不映射到视图的时候,Resolver404
异常由django.core.urlresolvers.resolve()
产生。 它是 django.http.Http404
的子类。
_exception _NoReverseMatch
source(../_modules/django/core/urlresolvers.html#NoReverseMatch)
当你的URLconf中的一个匹配的URL不能基于提供的参数识别时,NoReverseMatch
异常由 django.core.urlresolvers
产生。
数据库异常由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异常由django.http
导入。
_exception _UnreadablePostError
用户取消上传时抛出UnreadablePostError
异常。
事务异常定义在django.db.transaction
中。
_exception _TransactionManagementError
source(../_modules/django/db/transaction.html#TransactionManagementError)
对于数据库事务相关的任何问题,抛出TransactionManagementError
异常。
由DJango django.test
包提供的异常。
_exception _client.``RedirectCycleError
New in Django 1.8.
当测试客户端检测到重定向的循环或者过长的链时,抛出RedirectCycleError
异常。
Django在适当的时候也会抛出Python的内建异常。进一步的信息请见内建的异常的Python文档。
译者:Django 文档协作翻译小组,原文:Overview。
本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。