Я получаю только один объект в методе post внутри APIView из django rest framework, даже если я использую ScrapyItem.objects.all(). Кто-нибудь знает, почему

#Кто-нибудь знает, как это исправить. Я получаю только один объект в методе post внутри APIView из django rest framework, даже если я использую ScrapyItem.objects.all(). Кто-нибудь знает почему##

class ScrapyViewSet(APIView):
        def get(self, request, format=None):
            snippets = ScrapyItem.objects.all()
            serializer =ScrapySerializer(snippets, many=True)
            return Response(serializer.data)
    
    
        def post(self, request):
            snippets = ScrapyItem.objects.all()
            domain=request.data['domain']
            print(domain)
            
            
            for i in snippets:
                print(i)
                if i.domain==domain:
                    return Response({"status": "success", "data": str(i.data)}, status=status.HTTP_200_OK) 
    
                else:
                    return Response({"status": "error", "data": 'error'}, status=status.HTTP_400_BAD_REQUEST)

Оператор return останавливает функцию и возвращает результат выражения после ключевого слова return. Это означает, что даже если существуют другие объекты с заданным доменом, они не будут рассматриваться.

Вы можете просто сериализовать коллекцию элементов, которые соответствуют заданному домену с помощью:

class ScrapyViewSet(APIView):
    def get(self, request, format=None):
        snippets = ScrapyItem.objects.all()
        serializer =ScrapySerializer(snippets, many=True)
        return Response(serializer.data)
    
    def post(self, request):
        domain=request.data['domain']
        snippets = ScrapyItem.objects.filter(domain=domain)
        if snippets:
            serializer = ScrapySerializer(snippets, many=True)
            return Response({'status': 'success', 'data': serializer.data}, status=status.HTTP_200_OK) 
        else:
            return Response({'status': 'error', 'data': 'error'}, status=status.HTTP_400_BAD_REQUEST)

Обычно запрос POST используется для обновления состояния приложения: создания, обновления или удаления объектов, а не для получения элементов.

Вернуться на верх