【发布时间】:2018-06-07 21:03:43
【问题描述】:
我有一个创建字典的视图,比如说:
my_dict = {str(v): v*2 for v in range(2,8)}
my_dict['Total'] = {'Tip': 'Reconsider life choices'}
# bit of humour here
>> {'2': 4, '3': 6, '4': 8, '5': 10, '6': 12, '7': 14, 'Total': {'Tip': 'Reconsider life choices'}}
我将它作为'my_dict_json': json.dumps(my_dict) 传递给我的上下文字典。
在我的模板中,我将其重构为:
<button id="btn_exp" type="button" class="btn btn-primary" onclick="sendDicts()">
<script>
var d = JSON.parse('{{my_dict_json|safe}}');
// This is a function I bind to the onclick attr of a button
function sendDicts(){
$.ajax({
url: '{% url 'my_model:intended_view' %}',
type: 'POST',
contentType: 'application/json',
data: {
'my_dict': d,
'another_dict': d2
},
dataType: 'json'
});
}
</script>
我不确定这是否有所不同,但我的预期视图用@csrf_exempt 装饰,无论如何,当我检查(调试)预期视图时,我注意到request var 上没有数据 @ 987654326@ 和似乎是request.body 上的字典作为带有很多%s 的二进制字符串,如果我尝试使用json.loads(request.body.decode()),它会惨遭失败:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我在这里错过了什么?
【问题讨论】: