我将以下 NSMutableDictionary
作为 AFNetworking
的参数从 iPhone 应用程序 (IOS 6.1) 传递到 Django 服务器
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:[self getProductDictionary] forKey:@"prodDic"];
[parameters setObject:ApplicationDelegate.userUniqueId forKey:@"userID"];
[manager POST:BaseURLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {...}
-(void) getProductDictionary
{
NSMutableDictionary *products = [[NSMutableDictionary alloc] init];
[products setObject:@"aaa" forKey:@"prod1"];
[products setObject:@"vvv" forKey:@"prod2"];
[products setObject:@"bbb" forKey:@"prod3"];
}
在服务器中我有以下 View :
import json
def foo(request):
if request.method == 'POST':
user_id = request.POST['userID']
products=json.loads(request.POST['prodDic'])
return HttpResponse("Done")
以下行导致错误 products=json.loads(request.POST['prodDic'])
并且错误是:raise MultiValueDictKeyError(repr(key)) MultiValueDictKeyError: "'prodDic'"
为了调试,我删除了这一行并添加了这段代码:
#for debug
for key in request.POST:
value = request.POST[key]
print value
key 如下所示:prodDic[prod1]
我怎样才能将字典接收到产品中,这样我就可以像这样运行它:
for key in products:
value = products[key]
最佳答案
请求对象 GET 和 POST 可以包含相同键的多个值。作为一些 HTML 表单元素,特别是 ,为同一个键传递多个值。
您正在将 request.POST 对象传递给 JSON 序列化程序,它不允许多个键具有相同的名称。所以请检查你的 request.POST 数据,看看你是否得到了多个同名的 key 。如果是,那么您必须在传递给 JSON 加载函数之前处理此数据。
希望能给大家一些解决问题的指点
关于python - Django 解析具有字典的 json 请求导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759755/