Как использовать исключение в 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)
Вернуться на верх