Django 异常

2024 年 8 月 29 日 | 阅读 2 分钟

异常是指导致程序失败的异常事件。 为了处理这种情况,Django 使用它自己的异常类,并且还支持所有核心 Python 异常。

Django 核心异常类在 django.core.exceptions 模块中定义。此模块包含以下类。

Django 异常类

Exception描述
AppRegistryNotReady在应用程序加载过程之前尝试使用模型时引发此异常。
ObjectDoesNotExistDoesNotExist 异常的基类。
EmptyResultSet如果查询没有返回任何结果,则会引发此异常。
FieldDoesNotExist当请求的字段不存在时,引发此异常。
MultipleObjectsReturned如果查询仅期望一个对象,但返回了多个对象,则会引发此异常。
SuspiciousOperation当用户执行了从安全角度来看应被视为可疑的操作时,引发此异常。
PermissionDenied当用户无权执行所请求的操作时,引发此异常。
ViewDoesNotExist当请求的视图不存在时,由 django.urls 引发。
MiddlewareNotUsed当服务器配置中未使用中间件时,引发此异常。
ImproperlyConfigured当 Django 在某种程度上配置不当时,会引发 ImproperlyConfigured 异常。
FieldError当模型字段出现问题时,会引发此异常。
ValidationError当数据验证失败时,会引发此异常,用于表单或模型字段验证。

Django URL 解析器异常

这些异常在 django.urls 模块中定义。

Exception描述
Resolver404当传递给 resolve() 函数的路径未映射到视图时,会引发此异常。
NoReverseMatch当无法根据提供的参数在 URLconf 中标识匹配的 URL 时,会引发此异常。

Django 数据库异常

以下异常在 django.db 模块中定义。

Exception描述
DatabaseError当数据库不可用时发生。
IntegrityError当执行插入查询时发生。
DataError当与数据相关的问题进入数据库时,引发此异常。

Django Http 异常

以下异常在 django.http 模块中定义。

Exception描述
UnreadablePostError当用户取消上传时,引发此异常。

Django 事务异常

事务异常在 django.db.transaction 中定义。

Exception描述
TransactionManagementError引发此异常是用于与数据库事务相关的所有问题。

Django 异常示例

假设,我们要获取 id = 12 的员工记录,我们的视图函数将如下所示。如果未找到数据,则会引发 DoesNotExist 异常。 这是 Django 的内置异常。

// views.py

// urls.py

它显示以下异常,因为在 id 12 处没有可用的记录。

输出

Django Exception example

我们可以使用 try 和 except 来处理它,现在让我们处理此异常。

// Views.py

输出

Django Exception output
下一主题Django 会话