我们可以在apiview类django rest框架中有多个get方法

时间:2017-06-17 05:59:39

标签: django-rest-framework

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

1 个答案:

答案 0 :(得分:2)

您可以使用viewsets而不是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'})

要使用它,您的网址就像http://base_url/< pk> / 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)