2014-10-02 44 views
1

我正在使用Django 1.7和Django REST Framework 2.4.3。我有一個端點,看起來像/items/{pk}/notify,使用UpdateAPIView可以很好地工作。我試圖將多個查詢參數傳遞給此URL,但我似乎只能看到第一個參數。 URL中的任何後續參數都已提交。我四處搜索,發現Django有一個QueryDict,然後我開始使用lists來獲得所有的值。不幸的是,這不起作用。如何獲取PUT請求中的所有URL參數?

這裏是我 -

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 PATCH 127.0.0.1:8000/items/notify/?ticket_no=123&foo=bar測試。奇怪的是,本地Django服務器沒有記錄完整的URL。我只看到[02/Oct/2014 08:52:03] "PATCH /items/1234/notify/?ticket_no=123 HTTP/1.1" 200 5

如何訪問所有URL參數?

回答

1

這不是Django的問題,這是您的curl命令的問題。您需要將url放在引號中,因爲&是一個由shell特別處理的元字符。

curl -X PATCH '127.0.0.1:8000/items/notify/?ticket_no=123&foo=bar' 

不帶引號,&告訴shell來在後臺運行命令,並移動到下一個命令。因此,shell運行兩個單獨的命令,並且只有第一個get參數包含在url中。

curl -X PATCH 127.0.0.1:8000/items/notify/?ticket_no=123 
foo=bar 
+0

謝謝!很高興看到這是一個簡單的修復。 – 2014-10-02 13:42:34

相關問題