如何在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_
相关产品推荐
相关产品推荐

