如何在Django rest框架中捕获Model.DoesNotExist异常?

时间:2018-09-30 07:11:34

标签: django django-models django-rest-framework

在Django其余框架中工作。当查询数据库模型并且该数据库模型不存在时,您将遇到以下异常

ModleName.DoesNotExist

此异常将根据型号名称而变化。例如:

查询模型汽车会升起

Car.DoesNotExist

查询模型飞机将升起

Plane.DoesNotExist

这会导致您无法在一个常见位置捕获异常的麻烦。因为您不知道Exception的父类。每次查询模型时都必须捕获异常,例如:

    try:
        return Car.objects.get(pk=1)
    except Car.DoesNotExist:
        raise Http404

为什么django设计这样的异常? 可以捕获具有共同血统的异常吗?

1 个答案:

答案 0 :(得分:3)

您可以使用ObjectDoesNotExist

from django.core.exceptions import ObjectDoesNotExist

try:
    return Car.objects.get(pk=1)
except ObjectDoesNotExist:
    raise Http404

ObjectDoesNotExist将捕获所有模型的DoesNotExist异常。

Django还提供了get_object_or_404()快捷方式,因此您无需显式引发Http404。