使用带有apiviews的django rest框架。我想在apiview类中使用多个get方法,并在urls文件中单独使用medthod的名称。
答案 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)