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

Django模板TemplateSyntaxError:无法解析'df_usage * 100'剩余部分

Django模板中TemplateSyntaxError问题排查

问题场景

我在Django模板中编写了如下代码:

{% for filesystem, total_quota, total_usage, df_usage in totals_by_filesystem %}
  <tr>
    <td>{{ filesystem }}</span></td>
    <td>{{ total_quota | filesizeformat }}</td>
    <td>{{ total_usage | filesizeformat }}</td>
    <td>{{ df_usage * 100 }}</td>
  </tr>
{% endfor %}

运行时出现如下错误:

Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: ' * 100' from 'df_usage * 100'

我认为{{ df_usage * 100 }}的语法是正确的,请问问题出在哪里?

问题原因与解决办法

Django模板语法和Jinja2存在差异,Django模板不支持在变量表达式中直接使用乘法运算符进行计算,你混淆了两种模板引擎的语法规则,这才导致了这个解析错误。

你可以通过以下两种方式解决:

  • 提前在视图层计算:在传递模板上下文前,先计算好百分比值(比如percentage_usage = df_usage * 100),然后将计算后的变量传入模板,直接在模板中使用{{ percentage_usage }}即可。
  • 使用Django内置模板标签:用widthratio标签来完成计算,写法为{% widthratio df_usage 1 100 %},该标签的计算逻辑是(分子 / 分母) * 比例值,这里正好对应(df_usage / 1) * 100的需求。

另外注意模板中的一个小问题:第一个<td>标签里多余了一个</span>闭合标签,没有对应的起始<span>,建议修正以保证HTML结构正确。


内容的提问来源于stack exchange,提问作者Red Cricket

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:07