Flask:请求variables中的当前页面

在一个模板中,我怎么得到我目前的网页? 我宁愿不传递像page的variables,特别是当我知道一些request.xxx可以提供给我的信息。

 <li {% if page=="home" %}class="active"{% endif %}> <a href="/">Home</a> </li> <li {% if page=="about" %}class="active"{% endif %}> <a href="/about">About</a> </li> 

只要你已经导入requestrequest.path应该包含这个信息。

首先在你的应用程序中从瓶子导入请求。 那么你可以使用它,而不必传递给模板:

 <li {%- if request.path == "/home" %} class="active"{% endif %}> <a href="/">Home</a> </li> <li {%- if request.path=="/about" %} class="active"{% endif %}> <a href="/about">About</a> </li> 

使用request.path似乎不是一个正确的方法,因为如果更改URL规则或在子文件夹下部署您的站点,您将不得不更新path。

改为使用request.url_rule.endpoint,它包含与实际path无关的实际端点名称:

 (Pdb) request.url_rule.endpoint 'myblueprint.client_pipeline' 

在模板中:

 <li {% if request.url_rule.endpoint == "myblueprint.client_pipeline" %}class="active"{% endif %}>Home</li> 

祝你好运!

尝试

 <li {% if request.endpoint == "blueprintname.routename" %}class="active"{% endif %}>Home</li> 

这个为我工作。

为了避免使用硬编码的URL,你可以使用如下的url_for函数:

 {% for ni in ['index', 'foo', 'bar', 'baz'] %} <li {%- if request.path == url_for(ni) %} class="active"{% endif %}><a href="{{ url_for(ni) }}">{{ ni | capitalize }}</a></li> {% endfor %} 

在这种情况下,索引,富,酒吧和巴兹将是函数名称,在你的Python代码中使用像这样:

 @app.route('/') def index():