Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在PUT请求中获取所有URL参数?_Django_Django Rest Framework - Fatal编程技术网

Django 如何在PUT请求中获取所有URL参数?

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

我正在使用Django 1.7和Django REST框架2.4.3。我有一个端点,看起来像
/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

非常感谢。很高兴看到这是一个简单的解决办法。