2015-10-14 164 views
0

我想在一個請求中發送多個json對象,但我無法從中提取值。Django無法處理多個請求

def config(request): 
print "type",type(request) 
print "request in config",request.body 
    if request.method == 'POST': 
    print "In Handler" 
    print "Request Body is ",request.body 
    data = simplejson.loads(request.body) 
    for i in data: 
     print "REQUEST is ____",i 
     z = json.dumps(i) 
     rew = retResp(z) 
    proID = request.data["proId"] 

對於請求1可以找到proID但請求2我無法獲得proID。

req1 = curl -X POST http://192.168.2.242:8080/server/config/ -d '{"confMsgReqId": 2,"proId":"123"}' -H "Content-Type: application/json" 
req2 = curl -X POST http://192.168.2.242:8080/server/config/ -d '[{"confMsgReqId": 2,"proId":"123"},{"confMsgReqId": 2,"proId":"345"}]' -H "Content-Type: application/json" 

回答

0

第一個請求中的數據是字典,因此您可以訪問data['proID']

第二個請求中的數據是兩個字典的列表,因此您可以訪問data[0]['proID']data[1]['proID']

如果您對第一個請求以及第二個請求使用數組,您會發現它更容易。可以創建一個可以處理列表中單個元素的api,但它會使代碼更復雜。

req1 = curl -X POST http://192.168.2.242:8080/server/config/ -d '[{"confMsgReqId": 2,"proId":"123"}]' -H "Content-Type: application/json" 

看着你的代碼,你可能想要訪問循環內的id。目前尚不清楚爲什麼您手動解碼json而不是使用request.data

for d in request.data: 
     d["proId"] 
+0

更早些時候我一次只使用request.data [「element」]處理一個請求,而對於這個項目,我使用這個(request.data [「element」])方法。所以,我需要改變我的項目中的任何地方。我的意思是我不能提出兩個新的請求(詞典) –

+0

現在能夠完成更改,謝謝@alasdair,對不起,我錯誤地解釋了你的觀點。 –