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

简介: Django异常DJango会抛出一些它自己的异常,以及Python的标准异常。Django核心异常Django核心异常类定义在django.core.exceptions中。

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。

相关文章
|
前端开发 关系型数据库 MySQL
Python Django开发 异常及解决办法(一)
该错误表明views.py中没有return一个返回值给前端。
Python Django开发 异常及解决办法(一)
|
3月前
|
关系型数据库 MySQL 编译器
记录一个Django相关的异常(mysqlclient老生常谈)
记录一个Django相关的异常(mysqlclient老生常谈)
176 2
|
Web App开发 缓存 安全
django 1.8 官方文档翻译: 3-6-2 内建的中间件
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html 中间件 这篇文档介绍了Django自带的所有中间件组件。
1259 3
|
中间件 Python
django 1.8 官方文档翻译: 3-6-1 中间件概览
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html 中间件 中间件是一个介入Django的请求和响应的处理过程中的钩子框架。
1055 1
|
API Python 调度
django 1.8 官方文档翻译: 3-4-1 基于类的视图
基于类的视图 视图是一个可调用对象,它接收一个请求然后返回一个响应。这个可调用对象可以不只是函数,Django 提供一些可以用作视图的类。
780 0
|
前端开发 Python
django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单
使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码(参见在视图中使用表单)。
937 0
|
Python
django 1.8 官方文档翻译: 4-2-4 人性化
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html django.contrib.humanize 一系列Django的模板过滤器,有助于向数据添加“人文关怀”。
807 0
|
数据库 Python 开发者
django 1.8 官方文档翻译: 3-4-2 内建显示视图
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html 基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式。
773 0
|
SQL 测试技术 数据库
django 1.8 官方文档翻译: 2-6-3 提供初始数据
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html 为模型提供初始数据 当你首次建立一个应用的时候,为你的数据库预先安装一些硬编码的数据,是很有用处的。
1026 0