在Django模板

时间:2016-11-14 05:12:09

标签: javascript python json django

我无法访问我尝试发送到Django模板的dict对象的值。我可以在我的视图中访问和打印字典的内容,但是当我尝试将数据发送到我的模板时,有各种各样的字符,例如它没有被正确编码。起初我认为它可能是序列化的问题,但我发现this post表明json_serializer.serialize应该与查询集一起使用。它是否正确?从这里我尝试了以下内容。

起初我试图自己发送数据变量而没有像这样的任何格式

data = {'item_1': 123, 'item_2': 456, 'item_3': ['a','b','c'] }
return render(request, 'testsite/new_page.html', {'data' : data} )

在模板中我有以下

<script>var data = "{{ data }}"; </script>
<script>console.log(data);</script>

// displays the following
// &lt;testsite.views.data object at 0x1045f1e48&gt;

然后我尝试将数据格式化为JSON

data = {'item_1': 123, 'item_2': 456, 'item_3': ['a','b','c'] }
return render(request, 'testsite/new_page.html', {'data' : json.dumps(data.__dict__) } )

//template
<script>var data = "{{ data }}"; </script>
<script>console.log(data);</script>

// the following is the improperly formatted result
// {&quot;item_1&quot;: 123, &quot;item_2&quot;: 456, &quot;item_3&quot;: [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,]

如果我不使用json.dumps(data.__dict__)而只是json.dumps(data),我会收到关于该对象不是JSON可序列化的错误

在我看来,我有以下几点。 dict的内容格式正确。

print(data.__dict__)
import pdb; pdb.set_trace()

# displays the dict properly
# {'item_1': 123, 'item_2': 456, 'item_3': ['a','b','c'] }

在模板中尝试使用javascript迭代数据对象,但它只显示格式不正确的dict的每个单独字符。

for (var key in data) {
    console.log(data[key]);
}

我做错了什么导致模板中格式不正确的数据?

1 个答案:

答案 0 :(得分:4)

考虑使用

Bigj on

return render(request, 'testsite/new_page.html', {'serialized_data' :json.dumps(data) } )

请注意<script>var data = "{{ serialized_data | safe }}"; </script> 过滤器停止django将safe变为"