我无法访问我试图发送到Django模板的字典对象的值。我可以在我的视图中访问和打印字典的内容,但是当我尝试将数据发送到我的模板时,会出现各种字符,例如它没有正确编码。起初我以为这可能是序列化的问题,但我发现this post其中声明json_serializer.serialize应该与查询集一起使用。它是否正确?从这里我尝试了以下。在Django模板中访问字典值
起初,我试图仅仅通过自身发送数据的变量没有任何格式,像这样
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
// <testsite.views.data object at 0x1045f1e48>
然后我试图格式化数据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
// {"item_1": 123, "item_2": 456, "item_3": ["a","b","c",]
如果我不使用json.dumps(data.__dict__)
而是改为jus t有json.dumps(data)
我得到关于对象的错误不是JSON可序列化
在我看来,我有以下几点。该字典的内容格式正确。
print(data.__dict__)
import pdb; pdb.set_trace()
# displays the dict properly
# {'item_1': 123, 'item_2': 456, 'item_3': ['a','b','c'] }
在模板试图通过使用JavaScript,像这样的数据对象上进行迭代,但它只是显示格式不正确的字典的每个单独的字符。
for (var key in data) {
console.log(data[key]);
}
我在做什么错误,导致模板中格式不正确的数据?
不能只是你'返回渲染(请求,“ testsite/new_page.html',{'data':data})'? – shuttle87
对不起,我应该更新。当我这样做时,会产生一个奇怪的结果,看起来像是一个内存位置。我会更新我的帖子 – user1852176
– e4c5