Django异常¶
Django引发了一些自己的异常以及标准的Python异常。
Django核心异常¶
Django核心异常类在 django.core.exceptions
中定义。
ObjectDoesNotExist
¶
-
exception
ObjectDoesNotExist
[源代码]¶ DoesNotExist
异常的基类;ObjectDoesNotExist
的try/except
将针对所有型号捕获DoesNotExist
例外。有关
ObjectDoesNotExist
和DoesNotExist
的更多信息,请参阅get()
。
FieldDoesNotExist
¶
MultipleObjectsReturned
¶
-
exception
MultipleObjectsReturned
[源代码]¶ 如果只需要一个对象,但返回多个对象,则查询会引发
MultipleObjectsReturned
异常。在django.core.exceptions
中提供了此异常的基本版本;每个模型类包含一个子类版本,可用于标识返回多个对象的特定对象类型。有关更多信息,请参阅
get()
。
SuspiciousOperation
¶
-
exception
SuspiciousOperation
[源代码]¶ 当用户执行了从安全角度来看应当被视为可疑的操作(例如篡改会话cookie)时,引发
SuspiciousOperation
异常。SuspiciousOperation
的子类包括:DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
如果
SuspiciousOperation
异常到达WSGI处理程序级别,则将其记录在Error
级别并产生HttpResponseBadRequest
。有关详细信息,请参阅 日志文档。
PermissionDenied
¶
-
exception
PermissionDenied
[源代码]¶ 当用户没有执行请求的操作的权限时,引发
PermissionDenied
异常。
ViewDoesNotExist
¶
-
exception
ViewDoesNotExist
[源代码]¶ 当请求的视图不存在时,
django.urls
引发ViewDoesNotExist
异常。
MiddlewareNotUsed
¶
-
exception
MiddlewareNotUsed
[源代码]¶ 当在服务器配置中未使用中间件时,将引发
MiddlewareNotUsed
异常。
ImproperlyConfigured
¶
-
exception
ImproperlyConfigured
[源代码]¶ 当Django以某种方式配置不当时 - 例如,如果
settings.py
中的值不正确或不可解析,则引发ImproperlyConfigured
异常。
FieldError
¶
-
exception
FieldError
[源代码]¶ 当模型字段有问题时,会引发
FieldError
异常。这可能由于以下几个原因:模型中的字段与抽象基类中具有相同名称的字段冲突
无限循环是由排序引起的
无法从过滤器参数中解析关键字
无法从查询参数中的关键字确定字段
在指定字段上不允许加入
字段名无效
查询包含无效的order_by参数
URL解析器异常¶
URL解析程序异常在 django.urls
中定义。
1.10 版后已移除: 在旧版本中,这些异常位于 django.core.urlresolvers
中。从旧位置导入将继续工作,直到Django 2.0。
Resolver404
¶
-
exception
Resolver404
¶ 如果传递给
resolve()
的路径未映射到视图,则resolve()
引发Resolver404
异常。它是django.http.Http404
的子类。
NoReverseMatch
¶
-
exception
NoReverseMatch
¶ 当无法根据提供的参数识别URLconf中的匹配URL时,
django.urls
会引发NoReverseMatch
异常。
数据库异常¶
数据库异常可从 django.db
导入。
Django包装标准数据库异常,以便您的Django代码具有这些类的保证的通用实现。
数据库异常的Django包装器与基础数据库异常的行为完全相同。有关更多信息,请参阅 PEP 249,Python数据库API规范v2.0。
根据 PEP 3134,__cause__
属性设置与原始(底层)数据库异常,允许访问提供的任何其他信息。 (请注意,此属性在Python 2和Python 3下均可用,但 PEP 3134 通常仅适用于Python 3.为了避免与Python 3出现意外的差异,Django还将确保通过 __cause__
提供的异常具有可用的 __traceback__
属性。
添加了上述 __traceback__
属性。
-
exception
models.
ProtectedError
¶
引发时使用 django.db.models.PROTECT
时防止删除引用对象。 models.ProtectedError
是 IntegrityError
的一个子类。
Http异常¶
Http异常可以从 django.http
导入。
UnreadablePostError
¶
-
exception
UnreadablePostError
[源代码]¶ UnreadablePostError
在用户取消上传时引发。
事务异常¶
事务异常在 django.db.transaction
中定义。
TransactionManagementError
¶
-
exception
TransactionManagementError
[源代码]¶ 对于与数据库事务相关的任何和所有问题,引发
TransactionManagementError
。
测试框架异常¶
django.test
包提供的例外。
RedirectCycleError
¶
-
exception
client.
RedirectCycleError
¶ 当测试客户端检测到环路或过长的重定向链时,引发
RedirectCycleError
。
Python异常¶
Django在适当的时候引发了内置的Python异常。有关 Built-in Exceptions 的更多信息,请参阅Python文档。