Python Flask:如何在{% include ... %}中传递变量?
解决Jinja2中include语句传递变量的问题
嘿,这个问题我之前也碰到过!你在使用Jinja2的include标签时,犯了一个常见的语法小错误,咱们一步步来修复它:
问题根源
你在index.html里写的{% include {{ content }} %}是错误的——Jinja2的逻辑标签({% ... %})内部不需要再用变量渲染语法({{ ... }})包裹变量。{% %}本身就是用来处理模板逻辑的,直接在里面写变量名就可以了,嵌套的{{ }}会让模板引擎无法正确解析。
正确写法
把index.html里的include语句改成这样:
{% include content %}
你的后端代码(init.py)是完全没问题的:
@app.route("/about") def about(): return render_template("index.html", content="about.html")
这样当访问/about路由时,模板引擎会正确读取content变量的值,然后引入对应的about.html文件。
额外小技巧
如果需要给被引入的模板传递额外的变量,可以用with关键字:
{% include content with page_title="关于我们" %}
要是想把当前模板的所有上下文变量都传递给被引入的模板,就用:
{% include content with context %}
内容的提问来源于stack exchange,提问作者Dirkiboy
相关产品推荐
相关产品推荐

