Flask项目中Jinja2 include语句TemplateSyntaxError报错求助
解决Flask Jinja2模板include语句的SyntaxError问题
错误根源
你的代码存在两个关键语法问题:
- 被引入的模板文件名
nav.html未用引号包裹,Jinja2会将其解析为变量而非字符串路径 - 即便使用
with传递参数,也必须先保证模板名的语法正确
正确语法示例
写法一(带with关键字)
{% include "nav.html" with active_page="home" %}
写法二(省略with关键字)
Jinja2支持直接在模板名后传递参数,写法更简洁:
{% include "nav.html" active_page="home" %}
你尝试的写法问题解析
% include nav.html with {active_page="home"} %}:缺失开头的{,模板名未加引号,且大括号包裹参数不符合Jinja2语法{% include nav.html with (active_page="home") %}:模板名未加引号,括号包裹参数属于冗余写法{% include nav.html with 'active_page'="home" %}:模板名未加引号,参数名无需额外加引号{% include nav.html active_page="home" %}:仅缺少模板名的引号,补全后即可正常运行
关于w3schools示例的说明
w3schools的示例可能适配的是其他模板引擎或旧版语法,Jinja2强制要求被引入的模板文件名必须以字符串(引号包裹)形式传入,这是导致你报错的核心原因。
内容的提问来源于stack exchange,提问作者Klaas Vonk
相关产品推荐
相关产品推荐

