2016-01-27 58 views
3

我想發佈一些數據字符串列表,但無法收到服務器列表中它給了我清單的僅最後一個元素POST列表的Django RESTAPI

con = ["71qweq74520", "8324wqe57", "81ewqewq166"] 

收到

con = 81ewqewq166 

代碼以接收服務器API: -

@csrf_exempt 
@api_view(['POST']) 
def getUser(request): 
    if request.method == 'POST': 
     if isapiValid(request): 
      for params in request.POST: 
       print params,request.POST[params] 
       #this prints last element of array/lis 

蟒蛇scirpt後: -

con = ["71qweq74520", "8324wqe57", "81ewqewq166"] 
data = { 'apikey':apikey, 'sig':sig ,'con': con} 
data2 = json.dumps(data) 
#hostname = '127.0.0.1:8000' 
hostname = 'XX.XX.XX.XX' 
method = 'method' 
task = 'getUser' 
url = 'http://'+ hostname + '/' + method + task 
r = requests.post(url, data=data) 
#r = requests.post(url, data=data2) this too fails 

如何成功獲取發佈列表?從日誌的httpd

輸出: -

[Wed Jan 27 13:35:05.868468 2016] [:error] [pid 18858] API validation passed 
    [Wed Jan 27 13:35:05.868512 2016] [:error] [pid 18858] 81ewqewq166 
    [Wed Jan 27 13:35:05.868547 2016] [:error] [pid 18858] one 99qwerty99 
    [Wed Jan 27 13:35:05.868566 2016] [:error] [pid 18858] apikey 4618d76f2fb84eacbac3339e5c7f2b57 
    [Wed Jan 27 13:35:05.868589 2016] [:error] [pid 18858] sig e8fe50c733ec6513c91f10caf63e7864 
    [Wed Jan 27 13:35:05.868608 2016] [:error] [pid 18858] con 81ew 
qewq166 

觀光request.post recceived是: -

{ 
      "_content_type": "application/json", 
      "_content": "{\"one\": \"9998889999\",\"con\": [7106174520, 8324100257]}\r\n" 
     } 

但是當我做request.POST.get( 'CON')只有最後一個元素被接收?

+0

所以,你有一個類似於這個'http :: // localhost:8000/method/getUser'的端點,它是一個post請求。它說方法不支持GET?你不覺得你應該重新命名嗎?另外,請嘗試發送不支持的響應的405狀態碼。 – ishaan

+0

另外,您可能正在接收所有內容,請嘗試打印此request.POST.get('con')'。 – ishaan

+0

我試圖打印,這是什麼給了我request.POST.get('con')列表的最後一個元素 – pkm

回答

4

這是Django中有趣的事情之一。如果你想從郵寄申請中得到清單,你應該使用request.POST.getlist(your_key)。在你的情況下request.POST.getlist('con')

您可以找到更多關於此主題here

+0

是的,我想了一下 – pkm