访问 Json 对象名称

Access Json object name

我想在 frontend.I 中使用 request.data.columns 获取数据,可以使用带有列表方法的 ViewSet 来完成,但如何使用 generics.APIView 来完成。 下面是我的视图集和泛型代码:

class TestList(viewsets.ViewSet):
     queryset = Test.objects.all()
     def list(self,request):
         serializer = TestSerializer(self.queryset, many = True)
         return Response({'columns': serializer.data})

class TestList(generics.RetriveAPIView):
    queryset = Test.objects.all()
    serializer_class = TestSerializer
class TestList(APIView):
     queryset = Test.objects.all()
     def list(self,request):
         serializer = TestSerializer(self.queryset, many = True)
         return Response({'columns': serializer.data})

像这样改变你的urls.py。

path(r"url", TestList.as_view({"get": "list"}))

正确代码:

class TestList(APIView):
     queryset = Test.objects.all()
     def list(self,request):
         queryset = self.get_queryset()
         serializer = TestSerializer(queryset, many = True)
         return Response({'columns': serializer.data})

关于为什么我必须添加 queryset = self.get_queryset() 而不是直接访问 self.queryset.From 官方 drf 文档的详细信息:

queryset - 应该用于从此视图返回对象的查询集。通常,您必须 设置此属性,或者覆盖 get_queryset() 方法。如果您要覆盖视图方法,请务必调用 get_queryset() 而不是直接访问此 属性,因为查询集将被评估一次,并且这些结果将被缓存以供所有后续请求使用。