get()接收关键字参数的多个值' uuid'

时间:2015-10-14 22:26:12

标签: python django django-rest-framework

我知道每个人都会讨厌这个问题,因为它与django 1.5和rest-framework 2.4.6有关,但这是因为这是我们的产品最初构建的,直到我们切换所有我们的服务器到我们的新代码,我们必须支持它。我尝试创建api但是在尝试访问该页面时收到此TypeError

TypeError at /api/call-history/41d36c79-808e-14e4-b2c9-e9137925356c/

get() got multiple values for keyword argument 'uuid'

以下是我的网址文件中的要点:

UUID = r'^(?P<uuid>[\w\-]+)/'

urlpatterns = (
    url(UUID + r'$', CallHistoryView.as_view()),
)

目前我的观点是,只需使用方法的简单存根:

class CallHistoryView(APIView):
    def get(self, uuid):
        return Response({}, status=status.HTTP_200_OK)

我不知道为什么会出现这个错误。我已经多次更改了我的正则表达式而没有更好的结果,我也查看了标题,看看它们是否引起了混淆。每个都无济于事。我不知道发生了什么,任何帮助都将不胜感激。提前谢谢!

修改:您也可能想知道网址的/api/call-history/部分来自哪里,但是来自此网站之前被点击的网址文件中的部分,以及我知道他们工作正常,但如果你想看到这些线条,我很乐意提供它们。

1 个答案:

答案 0 :(得分:2)

APIViewget()方法的第一个参数应该是request对象。您可以从uuid获取self.kwargs

class CallHistoryView(APIView):
    def get(self, request, *args, **kwargs):
        uuid = self.kwargs['uuid']
        return Response({}, status=status.HTTP_200_OK)