首页 > 解决方案 > Django 在模板中向 Javascript 发送数据

问题描述

我想为我提取的文档之间的一些链接制作一个非常简单的网络图,并将其显示在现有的 Django 应用程序中。我已经看过一堆 Bokeh/Django 集成和类似的东西,但似乎没有什么合适的。因此,我决定继续尝试 D3。我不知道任何Javascript。我复制了此处提供的模板:http: //bl.ocks.org/mbostock/2706022,这对我来说很好。我需要做的就是提供我自己的数据。我可以在视图中建立一个字典列表并将它们作为上下文传递。我可以使用 {{ data }} 在模板中访问该上下文。但是,我不知道如何将其提供给 javascript。这是我需要更改的相关部分:

var links = [
  {source: "Microsoft", target: "Amazon", type: "licensing"},
  {source: "Microsoft", target: "HTC", type: "licensing"},
  {source: "Samsung", target: "Apple", type: "suit"},
  {source: "Motorola", target: "Apple", type: "suit"},
  {source: "Nokia", target: "Apple", type: "resolved"},
...
  {source: "Nokia", target: "Qualcomm", type: "suit"}
];

这看起来像一个字典列表。但我不知道,那里有一些空话,所以我不确定 Javascript 是如何看待这件事的,以及如何将 python 上下文转换为任何内容。我想象一些类似的东西

var links = <cast>({{data}})

如何实现这一点,以便我可以将这个 D3 代码传递给我自己的数据?

标签: javascriptpythondjangotemplates

解决方案


您可以构建字典列表并将其作为 JSON传递给您的模板。
然后在 javascript 中解析您的 JSON 字符串。

在 python 中使用data = json.dumps(your_list_of_dict),在 javascript 中使用var links = JSON.parse('{{data}}');. 对于潜在的报价问题,您可能需要做更多的事情。


推荐阅读