Как использовать исключение в python?
Я написал код ниже.
def get(self, request):
...
try:
...
...
food = Food.objects.get(food_id="red")
if food:
data = {
"name" : food.name,
}
res.append(data)
return JsonResponse({"success": res}, status=200)
except Exception as e:
return JsonResponse({"failed": e}, status=403)
Мое намерение таково: я хотел бы пойти на исключение и получить 403, если не будет еды.
Однако в этом случае, если нет данных о "пище", возникает ошибка 500 (DoesNotExist).
Почему я получаю эту ошибку? Я неправильно понимаю концепцию исключения?
def get(self, request):
try:
...
...
try:
food = Food.objects.get(food_id="red")
except Food.DoesNotExist:
return JsonResponse({"Failed": "food doesn't exist"}, status=400)
data = {
"name" : food.name,
}
res.append(data)
return JsonResponse({"success": res}, status=200)
except Exception as e:
return JsonResponse({"failed": e}, status=403)
также можно использовать
from django.shortcuts import render,get_object_or_404
obj = get_object_or_404(Food,food_id="red")# this will handle error if food is don't exist.
Думаю, вам нужно добавить исключение в блок try во время проверки элемента Food.
Для этого ваш новый код будет таким:
def get(self, request):
...
try:
...
...
try:
food = Food.objects.get(food_id="red")
except Food.DoesNotExist:
return JsonResponse({"error": "Food doesn't exist"}, status=404)
data = {"name" : food.name}
response.append(data)
return JsonResponse({"success": response}, status=200)
except Exception as err:
return JsonResponse({"failed": err}, status=403)