【问题标题】:Additional views to Django Rest Framework ViewSetDjango Rest Framework ViewSet 的附加视图
【发布时间】:2018-12-21 09:53:12
【问题描述】:

我有一个模型的简单 DRF 视图集,位于 /gen_req/

class GenerationRequestViewSet(viewsets.ModelViewSet):
    queryset = GenerationRequest.objects
    serializer_class = GenerationRequestSerializer

它有默认的 POST/GET/等。处理程序。但是,我想为 GET 以及不同的 url 模式添加另一个(/gen_req/created_list:

class GenerationRequestViewSet(viewsets.ModelViewSet):
    queryset = GenerationRequest.objects
    serializer_class = GenerationRequestSerializer

    @action(methods=['get'])
    def special_get_handler(self, request):
        queryset = GenerationRequest.filter(...) # Some extra filtering here
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

有没有办法在 ViewSet 中创建这样的视图,或者应该创建另一个 APIView?

【问题讨论】:

  • 这正是我所需要的,谢谢!

标签: python django django-rest-framework


【解决方案1】:

您可以这样做,只需将此类记录添加到您的urls.py 文件中即可。

path('/gen_req/created_list',
     GenerationRequestViewSet.as_view({'get': 'special_get_handler'}),),

【讨论】:

    【解决方案2】:

    您可以这样做,但您需要相应地命名您的方法。因此,使用您发布的代码,您将能够通过请求/gen_req/special_get_handler 来获取此方法。

    当然要在url.py中注册。喜欢:

    api_router = DefaultRouter()
    api_router.register("gen_req", GenerationRequestViewSet)
    

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 2018-10-01
      • 2014-07-01
      • 2014-12-15
      • 2015-02-12
      • 2018-09-04
      • 2017-01-05
      • 2020-08-26
      • 1970-01-01
      相关资源
      最近更新 更多