【问题标题】:Can we have multiple get method in apiview class django rest framework我们可以在apiview类django rest框架中有多个get方法吗
【发布时间】:2017-06-17 05:59:39
【问题描述】:

我正在使用带有 apiviews 的 django rest 框架。我想在 apiview 类中使用多个 get 方法,并与 urls 文件中的方法名称分开。

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    您可以为此使用视图集而不是 apiview。

    这是一个例子。

    from rest_framework import viewsets
    from rest_framework.decorators import detail_route
    from rest_framework.response import Response
    
    class MyViewSet(viewsets.GenericViewSet):
    
        @detail_route(methods=['get'])
        def some_get_method(self, request, pk=None):
            return Response({'data': 'response_data'})
    

    为了使用它,你的 URL 应该是 http://base_url//some_get_method

    或者您可以覆盖 APIView 内部的调度方法来这样做,

    def MyAPIView(APIView):
        def some_get_method(self, request):
            return Response({'data': 'response_data'})
    
        def dispatch(self, request, *args, **kwargs):
            if request.method.lower() == "get" and request.GET.get('identifier'):
                return self.some_get_method(request)
            return super().dispatch(request, *args, **kwargs)
    

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 2016-06-20
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多