【发布时间】:2017-06-17 05:59:39
【问题描述】:
我正在使用带有 apiviews 的 django rest 框架。我想在 apiview 类中使用多个 get 方法,并与 urls 文件中的方法名称分开。
【问题讨论】:
我正在使用带有 apiviews 的 django rest 框架。我想在 apiview 类中使用多个 get 方法,并与 urls 文件中的方法名称分开。
【问题讨论】:
您可以为此使用视图集而不是 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)
【讨论】: