You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板for循环语句报错失效,请求技术协助

修复Django模板中for循环的语法错误

嘿,我一眼就看到问题所在了——这个错误完全是因为Django模板标签的空格使用不符合规范导致的。Django对模板标签的格式要求很严格,咱们来一步步解决:

错误根源

你代码里的两处空格破坏了模板标签的语法规则:

  1. 错误写法:{% for x in clients % } → %和}之间多了一个空格
  2. 错误写法:{ % 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:07:28