Итерация по словарю без набора в шаблоне
У меня есть словарь, который я подаю в линейный график 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 словари через шаблон.
У вас есть несколько способов написать это, сначала прочитайте документацию по языку шаблонов django.
Надеемся, вы понимаете, что для получения списка дней, хранящихся в качестве значения для ключа day в python, вы должны сделать что-то вроде context['graph_data']['days'].
В шаблоне мы используем . для доступа к ключам словаря, поэтому мы можем использовать graph_data.days в шаблоне, чтобы получить тот же список дней, который context['graph_data']['days'] выдал бы в python.
Так что я бы сделал это следующим образом:
new Chart(ctx1, {
...
data: {
labels:[{% for i in graph_data.day %}{{ i }},{% endfor %}],
...
}
}