gpt4 book ai didi

django - django apiview 中自定义方法的 URL

转载 作者:行者123 更新时间:2023-12-03 08:53:42 25 4
gpt4 key购买 nike

我是 Django 新手,我对 Django apiview 的自定义方法有点困惑。在ApiView中,如何创建自定义方法以及如何从axios调用。

例如

这是我的观点

class TimeSheetAPIView(APIView):    

@action(methods=['get'], detail=False)
def getbytsdate(self, request):
return Response({"timesheet":"hello from getbydate"})

def get(self,request,pk=None):
if pk:
timesheet=get_object_or_404(TimeSheet.objects.all(),pk=pk)
serializer = TimeSheetSerializer(timesheet)
return Response({serializer.data})
timesheet=TimeSheet.objects.all()
serializer = TimeSheetSerializer(timesheet,many=True)
return Response({"timesheet":serializer.data})

这是我的网址=>

    url(r'^timesheets_ts/(?P<pk>\d+)/$', TimeSheetAPIView.as_view()),
url(r'^timesheets_ts/', TimeSheetAPIView.as_view()),

通常我的网址会像=>

api/timesheet_ts/

这个将获取我的所有记录。

所以我的问题是如何为 getbytsdategetbyname 或其他某种自定义获取方法设置 URL?我该如何打电话?

我尝试过这样=>

url(r'^timesheets_ts/getbytsdate/(?P<tsdate>[-\w]+)/$', TimeSheetAPIView.as_view()),

我就这样打电话

api/timesheets_ts/getbytsdate/?tsdate='test'

这不起作用。

请问您能解释一下apiview中的自定义方法和url设置吗?

最佳答案

除了实现之外,您只需向 urls.py 显示自定义获取请求即可。按如下方式编辑 urls.py:

# urls.py

timesheet_getbytsdate_detail = TimeSheetAPIView.as_view({'get': 'getbytsdate'})
timesheet_detail = TimeSheetAPIView.as_view({'get': 'retrieve'})

urlpatterns = [
url(r'^timesheets_ts/getbytsdate/(?P<tsdate>[-\w]+)/$', getbytsdate_detail),
url(r'^timesheets_ts/(?P<pk>[0-9]+)/', timesheet_detail),
]

编辑:您需要使用 viewsets.GenericViewSetmixins.RetrieveModelMixin 组合而不是 APIVew 来利用它:

class TimeSheetAPIView(viewsets.GenericViewSet, mixins.RetrieveModelMixin):    

@action(methods=['get'], detail=False)
def getbytsdate(self, request):
return Response({"timesheet":"hello from getbydate"})

def retrieve(self, request, *args, **kwargs):
timesheet=self.get_object()
serializer = TimeSheetSerializer(timesheet)
return Response({serializer.data})
timesheet=TimeSheet.objects.all()
serializer = TimeSheetSerializer(timesheet,many=True)
return Response({"timesheet":serializer.data})

关于django - django apiview 中自定义方法的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57247737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com