【问题标题】:Direct data input from Django for a D3 graph从 Django 直接输入数据用于 D3 图
【发布时间】:2012-10-28 21:26:35
【问题描述】:

似乎所有 D3 示例图都将外部 .csv 或 .tsv 文件作为输入数据。有没有办法修改代码以从 Django 中的变量中获取数据。假设 {{ data }} 是 JSON 格式,您如何在 http://bl.ocks.org/3885304http://bl.ocks.org/3887051 等图形中实现这一点?我试图避免总是写一个 .csv 文件。

【问题讨论】:

标签: javascript django json d3.js


【解决方案1】:

您始终可以创建一个视图,该视图将为 D3 使用的动态 csv 文件提供服务。这种方式还允许用户在需要原始数据而不是图表时下载数据。

def foo(request, ...):
    model = get_object_or_404(Foo, ...)
    data = model.get_data() # should return csv formatted string
    return HttpResponse(data, content_type='text/csv')

【讨论】:

  • 如果您经常这样做,请考虑使用类似美味派的 API github.com/toastdriven/django-tastypie
  • 另外,我同意 Miki725 re csv。从 django 将 csv 和 json 都提供给 d3 之后,我现在坚持使用 csv,因为有一些很好的工具,例如 d3.nest 和 crossfilter 用于优化选择,而且 csv 比 json 更易于传输。
【解决方案2】:

您可以在传递给模板标签变量和|safed 的字符串中使用格式正确的 JSON,而不是异步加载数据(ajax 样式)。

查看基于http://bl.ocks.org/3885304 的工作示例http://bl.ocks.org/4040034

您还应该查看关于 SO 的相关问题,关于这个主题有很多。

【讨论】:

  • 那张图就是我要找的。我的 {{ data }} 完全是他们的 var 数据的格式,即 JSON。我可以简单地用 var data = {{ data }} 替换他们的数据吗?它似乎不起作用。
  • 关键是|safe绕过django默认的字符串转义。
猜你喜欢
  • 2012-10-14
  • 2013-06-24
  • 2014-04-14
  • 2019-05-08
  • 2017-01-30
  • 2015-09-19
  • 2018-01-14
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多