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