将数据从Django视图传递到D3

时间:2013-06-26 23:58:28

标签: python html django d3.js

完成新手问题:

我正在运行一个Django应用程序,我在其中生成一个包含数据的视图:

result = json.dumps(data)

context = RequestContext(request, {
    'result': result,
})

return HttpResponse(template.render(context))

现在我有一个map.js文件,我使用d3.js在其中渲染数据的热图。 我还有一个index.html文件,我的页面被渲染,热图参考通过

传递
<body>
 <div id="heatMap">
 </div>
<body> 

问题:如何将视图中生成的数据传递给map.js文件?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:8)

在您的模板中,使用{{ result }}标记之间的<script></script>来进行JavaScript魔术。

如果result是序列化的JSON对象,则可以使用JSON.parse(result)将JSON字符串转换为JavaScript对象。

示例:

<script type="text/javascript">
var data = JSON.parse("{{ result }}");
run_d3_stuff(data);
</script>

答案 1 :(得分:2)

这里有一些潜在的解决方案。

正如Alp所指出的,第一个是:

<script>
    run_d3_stuff('{{results}}'); //Use whatever your function is here.
</script>

另一种解决方案是使用视图呈现脚本文件并将其包含在目标页面中。

编辑:

更清楚的是,第二个解决方案是将模板更改为您的JavaScript文件,使用上面相同的技巧为此设置变量的值。然后在你的页面中你会这样做:

<script src="my_view's_path"></script>