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