从AJAX POST开始,QueryDict总是空的

我已经看到了一些问题,但我试图实施他们的解决方案,但它对我没用。

我正在尝试使用POST将基本的AJAX请求发送到django视图。 这是我的JQuery:

$('#save-button').click(function() { var names = ['BLOGGS Joe', 'SMITH John']; data = JSON.stringify(names); $.ajax({ "contentType": "application/json; charset=utf-8", "data": data, "url" : "/ajax/myteam/save/", "type": "POST", "success": function(response) { } }); }); 

这是我的Django视图:

 def myteam_save(request): if request.method == 'POST': if request.POST: print 'Hurray' else: print 'Boo' response = HttpResponse(json.dumps({'code':'ok'}), content_type='application/json') return response 

当我检查Firebug中发生的事情时,我发现post正在按照我的意图制作,但来自request.POST的QueryDict对象始终为空。

我一直在小心csrf令牌,我想甚至尝试在我的设置中关闭’django.middleware.csrf.CsrfViewMiddleware’,但这似乎没有效果。

我究竟做错了什么?

谢谢你的帮助!

Django并没有真正为您反序列化JSON有效负载。 request.POST旨在用于HTML发布的表单等。

对于JSON有效负载,您应该自己反序列化请求主体,例如: json.loads(request.body)

request.body是您访问原始有效负载的方式)。