これにはちょっと2つの解決策があります:
最初の方法は、マクロを定義し、それをアクティブ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.htmlg.active_menu_item`should consider
からアカウントに継承します。お気に入り:
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>