2015-11-06 54 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

回答