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

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

Django 异常类

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

Django URL 解析器异常

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

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

Django 数据库异常

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

例子描述
DatabaseError当数据库不可用时会发生这种情况。
IntegrityError它在执行插入查询时发生。
DataError当数据相关问题进入数据库时,它就会出现。

Django Http 异常

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

例子描述
UnreadablePostError当用户取消上传时会引发该异常。

Django 事务异常

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

例子描述
TransactionManagementError它是针对与数据库事务相关的任何和所有问题而提出的。

Django 异常示例

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

// 视图.py

def getdata(request):  
    data = Employee.objects.get(id=12)  
    return HttpResponse(data) 

// url.py

path('get',views.getdata)  

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

输出:

1.png

我们可以使用try和 except来处理,现在我们来处理这个异常。

// 视图.py

def getdata(request):  
    try:  
        data = Employee.objects.get(id=12)  
    except ObjectDoesNotExist:  
        return HttpResponse("Exception: Data not found")  
    return HttpResponse(data);  

输出:

2.png

标签: django语言, django教程, django技术, django学习, django学习教程, django下载, django开发, django入门教程, django进阶教程, django高级教程, django面试题, django笔试题, django编程思想