Diango教程-Django 程序异常
异常是导致程序失败的异常事件。为了处理这种情况,Django 使用自己的异常类并支持所有核心 Python 异常。
Django 核心异常类在django.core.exceptions模块中定义。该模块包含以下类。
Django 异常类
例子 | 描述 |
---|---|
AppRegistryNotReady | 在应用程序加载过程之前尝试使用模型时会引发该错误。 |
ObjectDoesNotExist | DoesNotExist 异常的基类。 |
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 处没有可用记录。
输出:
我们可以使用try和 except来处理,现在我们来处理这个异常。
// 视图.py
def getdata(request):
try:
data = Employee.objects.get(id=12)
except ObjectDoesNotExist:
return HttpResponse("Exception: Data not found")
return HttpResponse(data);
输出: