2015-10-14 162 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,对不起,我错误地解释了你的观点。 –