在Django其余框架中工作。当查询数据库模型并且该数据库模型不存在时,您将遇到以下异常
ModleName.DoesNotExist
此异常将根据型号名称而变化。例如:
查询模型汽车会升起
Car.DoesNotExist
查询模型飞机将升起
Plane.DoesNotExist
这会导致您无法在一个常见位置捕获异常的麻烦。因为您不知道Exception的父类。每次查询模型时都必须捕获异常,例如:
try:
return Car.objects.get(pk=1)
except Car.DoesNotExist:
raise Http404
为什么django设计这样的异常? 可以捕获具有共同血统的异常吗?
答案 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。