如何将数据从django传递到d3.js

U.f*_*f.O 5 django d3.js

我正在做一个调查网站项目,需要我使用d3.js来执行某种条形图可视化.我正在使用Django来编写我的Web应用程序.

我遇到的问题是如何将与对象相关的所有值传递到d3.js中使用的数组?

choice = question.choicelist.get(choice_no=choice_no)
Run Code Online (Sandbox Code Playgroud)

对于问题的每个选择的投票将是选择1 = 4,选择2 = 6,选择3 = 7,选择4 = 1.

对于ds.js,读取数据集的最简单方法是:

var data = [ 4, 6, 7, 1]
Run Code Online (Sandbox Code Playgroud)

如何将数据传递给我的模板,以便d3.js能够将其作为上面的代码读取?

Rei*_*ees 8

最便捷的选择:将其转换为json.Json是有效的javascript,因此您可以将其直接插入到模板中,这似乎是您想要的.就像是

import json

def your_view(request):
    poll_results = [4, 6, 7, 1]
    poll_as_json = json.dumps(poll_results)
    # Gives you a string '[4, 6, 7, 1]'
    ...
    return render_or_whatever(context={'poll_as_json': poll_as_json})
Run Code Online (Sandbox Code Playgroud)

在您的模板中:

<script ...>
   var data = {{ poll_as_json }};
   ...
</script>
Run Code Online (Sandbox Code Playgroud)

那样的东西?

  • 是.当然,具体如何做取决于您的数据模型.Django可能能够帮助您直接在数据库查询中进行聚合/计数.请访问https://docs.djangoproject.com/en/dev/topics/db/aggregation/了解相关信息.灵感的虚拟例子:`Answer.objects.annotate(num_votes = Count('vote'))`可以用一个包含投票数的额外`num_votes`字段给你所有答案.举个例子,您必须使用自己的模型进行尝试. (3认同)