2015-11-06 96 views
4

我在我的基本模板中包含了一个模板,这是我渲染的模板的扩展。我在直接模板中设置了一个变量,并尝试在包含的模板中使用它。我期望以下输出Active,但相反,没有输出。为什么header.html看不到变量activeJinja2中的访问变量包括

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 %} 
+1

这是在继承的作用域规则的一个非常混乱的角落情况下/包含的模板。虽然可能有解决方案,但似乎这是你想要设计的任何方法都是错误的。你通过设置这个变量实际上想要达到什么目的?举一个更具体的例子。 – davidism

+0

以上是简化版本。 header.html包含一个带有链接的导航栏,并且我正在设置page.html中的活动链接。我知道我可以例如传递变量与render_template,但我宁愿不污染python代码。 – pv6142

+0

不,我得到你正在做一个最小的例子,但我想你实际上是在描述一个[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem ),如果我们知道你为什么要这样做,那么可能会有更好的解决方案。 – davidism

回答