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

Jinja2模板if语句使用方法及TemplateSyntaxError错误解决

Jinja2 if语句用法解析及你的语法错误修复

嘿,我来帮你搞定这个Jinja2的语法错误,顺便梳理清楚if语句的正确使用方式~

你的代码错误分析

你写的这段代码有两个关键问题:

  1. 循环变量名冲突:{% for prod in prod %}里,循环变量和你要迭代的可迭代对象都叫prod,这会导致迭代过程中变量被覆盖,逻辑完全混乱。
  2. if语句的语法错误:
    • 在Jinja2的控制块({% ... %})内部,不需要再用变量插值的双大括号{{}},直接写变量名就行,{{prod.sh}}这种写法是在输出变量时用的,不是在控制逻辑里用。
    • 判断数值相等要用==运算符,is关键字是用来做类型/特性测试的(比如判断是否为空is none、是否已定义is defined),不能用来判断数值等于1。

修正后的代码

把循环变量改名,同时修复if条件的语法,代码就正常了:

{% for product in prod %} 
    {% if product.sh == 1 %} 
        <pre>Lines to come if true</pre> 
    {% endif %} 
{% endfor %}

Jinja2 if语句的基础用法

1. 基本结构

最基础的if判断结构:

{% if 条件表达式 %}
    # 条件为真时执行的内容
{% endif %}

2. 支持的运算符

  • 比较运算符:==(等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)
  • 逻辑运算符:and(与)、or(或)、not(非)

示例:

{% if product.price > 50 and product.stock > 0 %}
    <p>可购买的中等价位商品</p>
{% endif %}

3. 结合else/elif

可以和其他语言一样,用else和elif实现多分支判断:

{% if product.rating >= 4.5 %}
    <p>顶级好评商品</p>
{% elif product.rating >= 3.5 %}
    <p>好评商品</p>
{% else %}
    <p>需要改进的商品</p>
{% endif %}

4. 用is关键字做特性测试

is关键字不是用来判断数值相等的,而是用来检测变量的特性,比如:

  • 判断变量是否已定义:{% if product.sh is defined %}
  • 判断变量是否为空:{% if product.description is none %}
  • 判断是否为字符串:{% if product.name is string %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:42:38