首页 > 解决方案 > djanog模板循环中的分组条形数据集

问题描述

我想使用 django 从图表 js 中绘制一个分组条,目前工作正常。其实我是手动做的。但我需要通过for循环(数据,标签,背景颜色)绘制一个分组条。

实际的

label_list=[2019,2020]
color_list=['#e75e72','#3396ff']
data_list=[[282,314,106,502,107,111],[86,350,411,340,635,809]]

datasets: [
        { 
          label: {{label_list.0|safe}}, 
          backgroundColor: '{{color_list.0|safe}}',
          data:{{data_list.0|safe}} , 
        }, 
        { 
          label: {{label_list.1|safe}}, 
          backgroundColor: '{{color_list.1|safe}}',
          data: {{data_list.1|safe}} ,
        }, 
        ]

我真的不知道动态地制作它。

我需要类似的东西

{% for x in label_list %}
 {{
label:label_list.forloop.counter[x],
background-color:color_list.forloop.counter[x],
data:data_list.forloop.counter[x]
}}//forloop.counter0,forloop.counter1
{% endfor %}

提前谢谢。

标签: djangochart.js

解决方案


与其在模板中处理值,不如在视图中构建数据集并将其作为上下文发送,如下所示:

datasets = list()

for label, color, data in zip(label_list, color_list, data_list):
    value_dict = {
         'label': label,
         'backgroundColor' : color,
         'data': data
    }
    datasets.append(value_dict)

context = {'datasets': json.dumps(datasets)}  # use 'import json' on top of the file
return render('template.html', context)

然后直接在你的模板中使用它,如下所示:

<script>
    var dataset = {{ datasets }}
    // rest of the code
</script>

推荐阅读