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

如何在Jinja2宏中嵌入if语句?解决TemplateSyntaxError语法错误

解决Jinja2宏中的TemplateSyntaxError问题

嘿,这个问题其实一眼就能找到根源——你写if标签的时候不小心加了多余的空格,导致Jinja2没法正确识别这个条件判断块!

看你原代码里的这部分:

{ % if required %} required {% endif %}

注意到{和%之间的空格了吗?Jinja2对标签语法的要求很严格:{%必须是紧挨着的组合,不能中间加空格,%}也得是同样的规则。这个多余的空格让Jinja2没把它当成合法的if标签,自然也就识别不了后面的endif,反而误以为你要结束macro块,所以才抛出了那个报错。

修正后的宏代码如下,我还帮你格式化了结构,方便后续维护:

{% macro input(name, plc, required=true, type='text', class='validate') -%}
    <input 
        name="{{ name }}" 
        placeholder="{{ plc }}" 
        type="{{ type }}" 
        class="{{ class }}" 
        value="{{ session.get(name) }}" 
        {% if required %} required {% endif %}
    >
{%- endmacro %}

核心修复点就是把{ %改成{%,确保Jinja2能正确解析这个条件判断逻辑。现在再运行应该就正常啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:43:12