DJango会抛出一些它自己的异常,以及Python的标准异常。
Django核心异常类定义在django.core.exceptions中。
DoesNotExist异常的基类;对ObjectDoesNotExist的try/except会为所有模型捕获到所有DoesNotExist 异常。
ObjectDoesNotExist 和 DoesNotExist的更多信息请见 get()。
MultipleObjectsReturned异常由查询产生,当预期只有一个对象,但是有多个对象返回的时候。这个异常的一个基础版本在django.core.exceptions中提供。每个模型类都包含一个它的子类版本,它可以用于定义返回多个对象的特定的对象类型。
详见get()。
当用户进行的操作在安全方面可疑的时候,抛出SuspiciousOperation异常,例如篡改会话cookie。SuspiciousOperation的子类包括:
如果SuspiciousOperation异常到达了WSGI处理器层,它会在Error层记录,并导致HttpResponseBadRequest异常。 详见日志文档。
PermissionDenied异常当用户不被允许来执行请求的操作时产生。
当所请求的视图不存在时,ViewDoesNotExist 异常由 django.core.urlresolvers产生。
当中间件没有在服务器配置中出现时,产生MiddlewareNotUsed异常。
DJango配置不当时产生ImproperlyConfigured异常 -- 例如,settings.py中的值不正确或者不可解析。
FieldError异常当模型字段上出现问题时产生。它会由以下原因造成:
URL解析器异常定义在django.core.urlresolvers中。
当向 resolve() 传递的路径不映射到视图的时候,Resolver404异常由django.core.urlresolvers.resolve()产生。 它是 django.http.Http404的子类。
当你的URLconf中的一个匹配的URL不能基于提供的参数识别时,NoReverseMatch 异常由 django.core.urlresolvers 产生。
数据库异常由django.db导入。
Django封装了标准的数据库异常,以便确保你的DJango代码拥有这些类的通用实现。
Django数据库异常的包装器的行为和底层的数据库异常一样。详见PEP 249,Python 数据库 API 说明 v2.0。
按照 PEP 3134,__cause__属性会在原生(底层)的数据库异常中设置,允许访问所提供的任何附加信息。(注意这一属性在Python 2和 3下面都可用,虽然 PEP 3134通常只用于Python 3。)
使用django.db.models.PROTECT时,抛出异常来阻止所引用对象的删除。models.ProtectedError is a subclass of IntegrityError.
HTTP异常由django.http导入。
用户取消上传时抛出UnreadablePostError异常。
事务异常定义在django.db.transaction中。
对于数据库事务相关的任何问题,抛出TransactionManagementError异常。
由DJango django.test 包提供的异常。
当测试客户端检测到重定向的循环或者过长的链时,抛出RedirectCycleError异常。
May 13, 2015