gpt4 book ai didi

python - Jinja - 是否有任何内置变量来获取当前 HTML 页面名称?

转载 作者:IT老高 更新时间:2023-10-28 20:58:58 24 4
gpt4 key购买 nike

我对 Jinja 和 Flask 很陌生

我想在导航栏中设置不同的背景颜色来指示当前页面。

是否有任何内置的 Jinja 变量或方法可以返回当前的 HTML 页面?如果可能,我想要不需要与 Python 文件通信的代码。

所以如果我目前在 index.html ,它将返回“index”或“index.html”

这是我模板中的导航代码:

<ul>
{% for item in navigation %}
<a href="{{url_for(item.route)}}">
<li>
{{item.text}}
</li>
</a>
{% endfor %}
</ul>

我要加 if语句,因此当前页面将获得 <li>class

{% if ??? %}
<li class="current">
...
</li>
{% else %}
...
{% endif %}

谢谢

最佳答案

jinja2 文档中有一个技巧可以解决您的问题:http://jinja.pocoo.org/docs/tricks/

如果您的列表足够简单,只需使用请求对象,类似这样:

<li {% if request.endpoint == item.endpoint %} class='active' {% endif %}>
<a href="{{url_for(endpoint)}}">{{item.text}}</a>
</li>

通常,我将此代码段写入一个带有显式参数的宏以设置 active:

{% macro render_sitem(endpoint, display, cls='', icon-cls='', active='') %}
<li {% if request.endpoint == endpoint or active == endpoint %} class='active' {% endif %}>
<a class='{{cls}}' href="{{url_for(endpoint)}}"><i class="{{icon-cls}}"></i> {{display}}</a>
</li>
{% endmacro %}

列表将类似于:

 <ul class="nav nav-list">
{{render_sitem('page.index', _('Pages'), icon-cls='icon-sitemap', active=active_page)}}
{{render_sitem('post.index', _('Posts'), icon-cls='icon-file', active=active_page)}}
{{render_sitem('user.index', _('Users'), icon-cls='icon-group', active=active_page)}}
</ul>

因此,如果您有一个扩展或包含您的列表的子页面,您可以设置事件项目,例如:

{% set active_page = 'page.index' %} 

在您的子页面顶部。

关于python - Jinja - 是否有任何内置变量来获取当前 HTML 页面名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com