从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
是您访问原始有效负载的方式)。