【问题标题】:Response CreateAPIView DRF响应 CreateAPIView DRF
【发布时间】:2019-03-01 10:01:48
【问题描述】:

我想回复CreateAPIView 像这样返回

Response(
            {
                'status': status_code.HTTP_200_OK,
                'message': 'Testimonials fetched',
                'data': serializer.data
             },)

但我不知道在AddAPIView 中最好使用哪个函数来获得上述响应

class AddAPIView(generics.CreateAPIView):
    queryset = Masjid.objects.all()
    serializer_class = serializers.MasjidAddSerialzer
    permission_classes = [IsAuthenticated]

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    覆盖 AddAPIView 视图类的 create() 方法

    class AddAPIView(generics.CreateAPIView):
            queryset = Masjid.objects.all()
            serializer_class = serializers.MasjidAddSerialzer
            permission_classes = [IsAuthenticated]
    
        def create(self, request, *args, **kwargs):
            response = super().create(request, *args, **kwargs)
            return Response({
                'status': 200,
                'message': 'Testimonials fetched',
                'data': response.data
            })
    

    【讨论】:

    • CreateAPIView中使用queryset = Masjid.objects.all()的目的是什么?
    • a queryset 属性或 get_queryset() 方法在 generics.CreateAPIView 类中没有任何作用,除非我们明确使用它们。在这篇文章中,它实际上是来自 OP @hacks 的 c&p
    • 想象一下这个查询将加载数百万条记录的情况。除非有必要,否则最好不要在 CreateAPIView 中使用它。
    • 不,这不会发生,因为the Django QuerySets are lazy
    猜你喜欢
    • 2015-12-10
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2015-12-22
    • 2015-11-12
    相关资源
    最近更新 更多