Django模板for循环语句报错失效,请求技术协助
修复Django模板中for循环的语法错误
嘿,我一眼就看到问题所在了——这个错误完全是因为Django模板标签的空格使用不符合规范导致的。Django对模板标签的格式要求很严格,咱们来一步步解决:
错误根源
你代码里的两处空格破坏了模板标签的语法规则:
- 错误写法:
{% for x in clients % }→%和}之间多了一个空格 - 错误写法:
{ % endfor %}→{和%之间多了一个空格
Django要求模板标签必须是{% 指令 %}的格式,标签符号和内部指令之间不能乱加多余空格,否则解析器会认不出这是合法的for循环。
修正后的核心代码
把JavaScript里的labels行改成正确的格式,我还额外加了一个小细节避免JavaScript语法错误:
labels: [ {% for x in clients %}'{{ x.name|escapejs }}'{% if not forloop.last %},{% endif %}{% endfor %} ],
|escapejs过滤器:用来转义客户名称里可能存在的单引号、换行等特殊字符,避免破坏JavaScript字符串结构{% if not forloop.last %},{% endif %}:去掉最后一个元素后面的多余逗号,避免JS语法报错
完整修正后的JavaScript代码块
<script type="text/javascript"> $(document).ready(function() { var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels: [ {% for x in clients %}'{{ x.name|escapejs }}'{% if not forloop.last %},{% endif %}{% endfor %} ], datasets: [{ label: 'Nbr des factures', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }]}, options: { scales: { yAxes: [{ ticks: { beginAtZero: true } }] } }});}); </script>
替换完这段代码后,你的模板解析错误应该就消失了,图表也能正常渲染啦。
内容的提问来源于stack exchange,提问作者alajeb
相关产品推荐
相关产品推荐

