使用JSON和AJAX通过视图传递dict

时间:2018-06-07 21:03:43

标签: jquery json ajax django

我有一个视图,我在其中创建一个字典,让我们说:

lst

我将其传递给我的上下文字典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 var没有它上面的request数据和POST上的字典作为二进制字符串有很多request.body,如果我尝试使用%,它会失败悲惨的:

json.loads(request.body.decode())

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

JSON.parse应该处理包含双引号属性名称的字符串,如下所示:&#39; {&#34; 2&#34;:4,&#34; 3&#34;:6}&# 39;

答案 1 :(得分:0)

我实际上通过移除contentType: 'application/json'解决了这个问题,无法解释原因,但......它正在发挥作用。