我们可以在 apiview 类 django Rest Framework 中拥有多个 get 方法吗

sil*_*ila 6 django-rest-framework

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

Pan*_*ini 5

为此,您可以使用视图集而不是 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'})
Run Code Online (Sandbox Code Playgroud)

为了使用它,您的 URL 将类似于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)
Run Code Online (Sandbox Code Playgroud)