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

Jinja2 include模板传参报错:expected token 'end of statement block'

排查Jinja2模板include传参的语法错误

错误原因

你遇到的jinja2.exceptions.TemplateSyntaxError是因为include语句传递参数的语法不符合Jinja2规范。Jinja2要求使用with传参时,必须以键值对形式指定变量,或使用with context传递当前模板的全部上下文,直接传入表达式会触发语法解析错误。

正确写法示例

1. 显式传递指定变量

如果仅需给body.html传递PDF链接参数,需为参数命名(比如pdf_link),以键值对形式传入:

{% include "body.html" with pdf_link=url_for('static', filename='pdf/Lorem-Ipsum.pdf') %}

修改后,可在body.html中通过{{ pdf_link }}调用该链接。

2. 传递当前模板全部上下文

若需要把sfa.html中的所有变量都传递给body.html,可使用with context:

{% include "body.html" with context %}

这种方式下,body.html可直接使用sfa.html中定义的所有变量(需先在sfa.html中定义pdf_link = url_for('static', filename='pdf/Lorem-Ipsum.pdf'))。

常见错误写法(需避免)

以下写法会触发你遇到的语法错误:

  • 直接在with后传入表达式,未指定键值对:
    {% include "body.html" with url_for('static', filename='pdf/Lorem-Ipsum.pdf') %}
    
  • with前缺少空格:
    {% include "body.html"with pdf_link=... %}
    

验证步骤

将sfa.html中的include语句修改为上述正确格式后,重启服务测试,语法错误即可消除。同时确保body.html中正确引用了传递的变量名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:10:21