在Django中处理ajax json对象 - 'QueryDict'对象没有属性'read'错误

时间:2016-06-01 13:11:26

标签: jquery python json ajax django

我正在尝试解析我的Django视图中的json对象,该视图已经通过post方法通过ajax从客户端传递。

JS:

$.post ('/update_vendor_merchandise_types/', JSON.stringify(json_obj));

查看:

def update_vendor_merchandise_types(request):
    print json_object
    # The output gives me  
    # QueryDict: <QueryDict: {u'[{"merchandise_id":"3"},{"merchandise_id":"4"}]': [u'']}>
    json_object = json.load(request.POST) # Error arises
pass

在注释行'QueryDict' object has no attribute 'read' error出现。 我做错了什么?

最终,我的目标是获取对merchandise_id值的访问权限。我试试

d = request.POST.iteritems()
for key, value in d:
    print value

并期待像

这样的东西
3 
4

2 个答案:

答案 0 :(得分:3)

request.POST用于表单编码内容。对于JSON,您应该直接访问普通主体:

json_object = json.loads(request.body)

答案 1 :(得分:3)

为什么在将json_obj发送到服务器时将其转换为字符串?我认为你应该这样做:

json_obj = {"key1": "value1", "key2": "value2"}
$.post('/update_vendor_merchandise_types/', json_obj)  

在这种情况下,在服务器端,您可以通过以下方式访问发送的数据:

v1 = request.POST["key1"]