遍历模板中的非查询集字典

Iterate through non-queryset dictionary in a template

我有一本字典,我正在将其输入 chart.js 折线图。

看起来如下:

context['graph_data'] = {'day': [datetime.date(2022, 2, 28),
  datetime.date(2022, 3, 1),
  datetime.date(2022, 3, 2),
  datetime.date(2022, 3, 3),
  datetime.date(2022, 3, 4),
  datetime.date(2022, 3, 5),
  datetime.date(2022, 3, 6),
  datetime.date(2022, 3, 7),
  datetime.date(2022, 3, 8),
  datetime.date(2022, 3, 9),
  datetime.date(2022, 3, 10),
  datetime.date(2022, 3, 11),
  datetime.date(2022, 3, 12),
  datetime.date(2022, 3, 13),
  datetime.date(2022, 3, 14),
  datetime.date(2022, 3, 15),
  datetime.date(2022, 3, 16),
  datetime.date(2022, 3, 17),
  datetime.date(2022, 3, 18),
  datetime.date(2022, 3, 19)],
 'response_totals': [0,
  0,
  0,
  0,
  12,
  12,
  1,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  1,
  0,
  0,
  0]}

我被绊倒的模板部分如下所示:

new Chart(ctx1, {
      type: "line",
      data: {
        labels: [{%for i in graph_data%}{{i.day}},{%endfor%}],
        datasets: [{
            label: "Referrals",
            tension: 0.4,
            borderWidth: 0,
            pointRadius: 2,
            pointBackgroundColor: "#cb0c9f",
            borderColor: "#cb0c9f",
            borderWidth: 3,
            backgroundColor: gradientStroke1,
            data: [{%for j in graph_data%}{{j.response_totals}},{%endfor%}],
            maxBarThickness: 6
          },

我有点新手。我可以处理查询集,但我不确定如何通过模板转换非 qs 词典。

您有几种写法,请先阅读 the documentation for django template language

希望您了解要将天数列表存储为 python 中 day 键的值,您需要执行类似 context['graph_data']['day'].

的操作

在模板中,我们使用 . 来访问字典键,因此我们可以在模板中使用 graph_data.day 来获得与 context['graph_data']['day'] 将在 python.

所以我会这样做:

new Chart(ctx1, {
    ...
    data: {
        labels:[{% for i in graph_data.day %}{{ i }},{% endfor %}],
        ...
    }
}