我的Ajax调用中包含数据:
data: { hint: {'asdf':4} },
我觉得我应该能够访问这个对象
request.POST['hint'] # and possibly request.POST['hint']['asdf'] to get 4
但是这个错误会妨碍你.我看着
MultiValueDictKeyError at /post_url/ "'hint'"
当我打印帖子数据时,我得到了奇怪的错误字典:
<QueryDict: {u'hint[asdf]': [u'4']}>
我怎么能正确传递数据,所以我在Python中保留了相同的结构并使用它与我在JS中的方式相同?
解决方法
首先,在$.ajax调用中,不是直接将所有POST数据放入data属性,而是将其添加到名为json_data的另一个属性中.例如:
data: { hint: {'asdf':4} },
应成为:
data: { json_data: { hint: {'asdf':4} } },
现在,应使用JSON.stringify将json_data转换为纯字符串:
data: { json_data: JSON.stringify({ hint: {'asdf':4} }) },
这会将数据作为字符串传递给Django,可以通过以下方式检索:
data_string = request.POST.get('json_data')
可以将其转换为类似dict的对象(假设json是在顶部导入json导入的):
data_dict = json.loads(data_string)
或者,没有中间data_string:
data_dict = json.loads(request.POST.get('json_data')) print data_dict['hint']['asdf'] # Should print 4