4
我在我的基本模板中包含了一个模板,这是我渲染的模板的扩展。我在直接模板中设置了一个变量,并尝试在包含的模板中使用它。我期望以下输出Active
,但相反,没有输出。为什么header.html
看不到变量active
?Jinja2中的访问变量包括
main.py
@app.route("/")
def root():
return render_template("page.html")
page.html中
{% set active = True %}
{% extends "base.html" %}
base.html文件
{% include "header.html" %}
header.html中
{% if active %}Active{% endif %}
这是在继承的作用域规则的一个非常混乱的角落情况下/包含的模板。虽然可能有解决方案,但似乎这是你想要设计的任何方法都是错误的。你通过设置这个变量实际上想要达到什么目的?举一个更具体的例子。 – davidism
以上是简化版本。 header.html包含一个带有链接的导航栏,并且我正在设置page.html中的活动链接。我知道我可以例如传递变量与render_template,但我宁愿不污染python代码。 – pv6142
不,我得到你正在做一个最小的例子,但我想你实际上是在描述一个[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem ),如果我们知道你为什么要这样做,那么可能会有更好的解决方案。 – davidism