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>
只要你已经导入request
, request.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():