本文概述
异常是导致程序失败的异常事件。为了应对这种情况, Django使用了自己的异常类, 并且还支持所有核心Python异常。
Django核心异常类在django.core.exceptions模块中定义。此模块包含以下类。
Django异常类
例外 | 描述 |
---|---|
AppRegistryNotReady | 在应用加载过程之前尝试使用模型时, 会引发该错误。 |
ObjectDoesNotExist | DidNotExist异常的基类。 |
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的内置异常。
// 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);
输出:
评论前必须登录!
注册