即使我使用 ScrapyItem.objects.all(),我在 django rest 框架的 APIView 内的 post 方法中也只得到一个对象。谁知道为什么

I am getting only one object in post method inside APIView of django rest framework even if I used ScrapyItem.objects.all(). Anyone knows why

##任何人都知道如何解决这个问题。即使我使用 ScrapyItem.objects.all(),我在 django rest 框架的 APIView 内的 post 方法中也只得到一个对象。谁知道为什么##

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 语句停止函数和 returns 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<strong>.filter(domain=domain)</strong>
        if snippets:
            serializer = ScrapySerializer(<strong>snippets</strong>, many=True)
            return Response({'status': 'success', 'data': <strong>serializer.data</strong>}, status=status.HTTP_200_OK) 
        else:
            return Response({'status': 'error', 'data': 'error'}, status=status.HTTP_400_BAD_REQUEST)

通常 POST 请求用于更新应用程序的状态:创建、更新或删除实体,而不是检索项目。