2017-06-17 198 views

回答

0

您可以使用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(self, request) 
     return super().dispatch(request, *args, **kwargs)