Django 异常
异常是导致程序失败的异常事件。为了应对这种情况,Django 使用自己的异常类,并支持所有核心 Python 异常。
Django 核心异常类定义在 django.core.exceptions 模块中。该模块包含以下类。
Django 异常类
异常 | 描述 |
---|---|
AppRegistryNotReady | 尝试在应用程序加载过程之前使用模型时引发的异常。 |
ObjectDoesNotExist | 不存在异常的基类。 |
EmptyResultSet | 如果查询不返回任何结果,则引发此异常。 |
FieldDoesNotExist | 请求的字段不存在时引发。 |
MultipleObjectsReturned | 如果查询只期望返回一个对象,但返回了多个对象,则引发此异常。 |
SuspiciousOperation | 当用户执行的操作应从安全性角度考虑为可疑操作时引发此异常。 |
PermissionDenied | 当用户没有执行所请求操作的权限时引发此异常。 |
ViewDoesNotExist | 当请求的视图不存在时由django.urls引发此异常。 |
MiddlewareNotUsed | 当服务器配置中未使用中间件时引发此异常。 |
ImproperlyConfigured | 当Django配置不正确时引发此异常。 |
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的内置异常。
// views.py
def getdata(request):
data = Employee.objects.get(id=12)
return HttpResponse(data)
// urls.py
path('get',views.getdata)
它显示以下异常,因为在id为12的记录中没有可用的数据。
输出:
我们可以使用try和except来处理它,现在让我们处理这个异常。
// Views.py
def getdata(request):
try:
data = Employee.objects.get(id=12)
except ObjectDoesNotExist:
return HttpResponse("Exception: Data not found")
return HttpResponse(data);
输出: