我有一个名为 main.html 的基本模板:
<ul>
<li>index</li>
<li>about</li>
<li>contacts</li>
</ul>
我有一个模板 index.html ,其中包含:
{% extends "main.html" %}
如何根据已命名的继承人将类属性添加到<li>
标记中?
例如,如果 index.html 扩展 main.html ,那么我将class="active"
添加到第一个<li>
,如果关于.html 扩展 main.html ,然后我将class="active"
添加到第二个<li>
....依此类推。
我怎么做?
答案 0 :(得分:1)
一种方法是保持main.html不变并通过调用super在子级别(about.html等)覆盖它?我没有测试过这段代码,但是:
{% block menu_bar %}
<ul>
<li>index</li>
<li>about</li>
<li>contacts</li>
</ul>
{% endblock %}
{% block menu_bar %}
<li class="active">about</li>
{{ super() }}
{% endblock %}
答案 1 :(得分:0)
对此有两种解决方法:
第一种方法是定义一个宏并从子页面(而不是继承的main
页面)调用它,其中包含使<li>
活动的信息。
喜欢:
{% macro menu(active) %}
<ul>
{% if active == 'index' %}<li class="active">{% else %}<li>{%endif%}index</li>
{% if active == 'about' %}<li class="active">{% else %}<li>{%endif%}about</li>
{% if active == 'contacts' %}<li class="active">{% else %}<li>{%endif%}contacts</li>
</ul>
{% endmacro %}
并将其用作:
{% from 'macro.html' import menu %}
{{ macro('index') }} #in index.html
{{ macro('about') }} #in about.html
{{ macro('contacts') }} #in contacts.html
另一种方法是使用神奇的g
变量。在您的视图中,函数定义哪个项应该是活动项,并放入g
变量。像:
from flask import g
app.route('/about')
def about():
...
g.active_menu_item = 'about'
...
return render_template('about.html')
您的about.html
(索引和联系人)也会从main.html', so the codes that render menu of
main.html should consider
g.active_menu_item`继承。像:
main.html:
<ul>
{% if g.active_menu_item == 'index' %}<li class="active">{% else %}<li>{%endif%}index</li>
{% if g.active_menu_item == 'about' %}<li class="active">{% else %}<li>{%endif%}about</li>
{% if g.active_menu_item == 'contacts' %}<li class="active">{% else %}<li>{%endif%}contacts</li>
</ul>
答案 2 :(得分:0)
<强> menu.html 强>
<ul>
<li class="{% if active_menu == 'index' %}active{% endif %}">index</li>
<li class="{% if active_menu == 'about' %}active{% endif %}">about</li>
<li class="{% if active_menu == 'contacts' %}active{% endif %}"contacts</li>
</ul>
<强>的index.html 强>
{% extends "main.html" %}
{% include "menu.html" with active_menu='index' %}
<强> about.html 强>
{% extends "main.html" %}
{% include "menu.html" with active_menu='about' %}
<强> contacts.html 强>
{% extends "main.html" %}
{% include "menu.html" with active_menu='contacts' %}