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

Flask中Jinja2模板if判断使用小于号比较渲染报错如何解决?

问题原因

  • Jinja2 中被 {% %} 包裹的控制逻辑块内部的运算符不会被识别为HTML标签,你错误使用了HTML转义字符 &lt; 代替原生小于号 < 作为比较运算符,才会导致逻辑语法报错。

正确实现方案

方案1:直接使用原生小于号(最常用)

直接在逻辑块内写 < 即可,Jinja2 会优先处理逻辑判断,不会将其解析为HTML标签:

{% for index,score in report_card.items() %}
<tr>
    {% if score['english']|float < 90.0 %}
    <td style="text-align: center; vertical-align: middle;"><span class="badge badge-danger">{{score['english'] }}</span></td>
    {% else %}
    <td style="text-align: center; vertical-align: middle;">{{score['english'] }}</td>
    {% endif %}
</tr>
{% endfor %}

方案2:使用Jinja2运算符别名(完全规避符号冲突)

如果担心特殊符号冲突,可以用Jinja2内置的比较运算符别名 lt(对应小于)代替 <,效果完全一致:

{% if score['english']|float lt 90.0 %}

优化建议

你可以把重复的td公共属性抽出来,仅对内容部分做条件判断,减少冗余代码:

{% for index,score in report_card.items() %}
<tr>
    <td style="text-align: center; vertical-align: middle;">
    {% if score['english']|float < 90.0 %}
        <span class="badge badge-danger">{{score['english'] }}</span>
    {% else %}
        {{score['english'] }}
    {% endif %}
    </td>
</tr>
{% endfor %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:04