Django 如何在PUT请求中获取所有URL参数?
我正在使用Django 1.7和Django REST框架2.4.3。我有一个端点,看起来像Django 如何在PUT请求中获取所有URL参数?,django,django-rest-framework,Django,Django Rest Framework,我正在使用Django 1.7和Django REST框架2.4.3。我有一个端点,看起来像/items/{pk}/notify,它使用UpdateAPIView工作得很好。我试图将多个查询参数传递到此URL,但似乎只能获取第一个参数。将提交URL中的任何后续参数。我四处搜索,发现Django有一个QueryDict,然后我继续使用列表来获取所有值。不幸的是,这不起作用 这是我所拥有的- class Notify(generics.UpdateAPIView): queryset = I
/items/{pk}/notify
,它使用UpdateAPIView
工作得很好。我试图将多个查询参数传递到此URL,但似乎只能获取第一个参数。将提交URL中的任何后续参数。我四处搜索,发现Django有一个QueryDict
,然后我继续使用列表来获取所有值。不幸的是,这不起作用
这是我所拥有的-
class Notify(generics.UpdateAPIView):
queryset = Item.objects.all()
serializer_class = ItemSerializer
def update(request, *args, **kwargs):
print('request: %s', request)
print('args: %s' % args)
print('kwargs: %s' % kwargs)
return Response(data='123')
我正在通过执行curl-X补丁127.0.0.1:8000/items/notify/?ticket\u no=123&foo=bar
进行测试。奇怪的是,本地Django服务器没有记录完整的URL。我只看到[02/Oct/2014 08:52:03]“PATCH/items/1234/notify/?ticket\u no=123 HTTP/1.1”200 5
如何访问所有URL参数?这不是Django的问题,而是curl命令的问题。您需要将url放在引号中,因为&
是一个由shell专门处理的元字符
curl -X PATCH '127.0.0.1:8000/items/notify/?ticket_no=123&foo=bar'
在没有引号的情况下,&
告诉shell在后台运行该命令,然后继续执行下一个命令。因此,shell运行两个单独的命令,url中只包含第一个get参数
curl -X PATCH 127.0.0.1:8000/items/notify/?ticket_no=123
foo=bar
非常感谢。很高兴看到这是一个简单的解决办法。