Могу ли я использовать макросы и переменные Jinja для динамического изменения классов панели навигации в шаблоне?Python

Программы на Python
Anonymous
Могу ли я использовать макросы и переменные Jinja для динамического изменения классов панели навигации в шаблоне?

Сообщение Anonymous »

Я создал веб-сайт с использованием HTML и CSS, который теперь хочу перенести в шаблоны Pelican/Jinja. Я хочу, чтобы панель навигации автоматически выделяла текущий раздел при создании страницы.
Например, на странице «Маст-шапка» (которая находится в разделе «О программе») я хочу, чтобы вкладка «О программе» на панели навигации имела другой цвет. Раньше я делал это, добавляя класс CSS (и ) вручную. Теперь я хочу сделать это более эффективно, используя макросы и переменные Jinja. Я также хочу добавить еще одну внутреннюю кнопку навигации на текущей странице.
Вот соответствующая часть base.html:

Код: Выделить всё

{% block nav %}

{% set btnH = '[url=/]Home[/url]'%}
{% set btnA = '[url=/about.html]About[/url]'%}

{% macro set_curr (section) %}
{% if section == 'Home' %}
{% set btnH = '[url=/]Home[/url]'%}
{% elif section == 'About' %}
{% set btnA = '[url=/about.html]About[/url]'%}
{% endif %}
{% endmacro %}

{{ set_curr("{{ section }}") }}

{{ btnH }}
{{ btnA }}

{% endblock nav %}
И в index.html:

Код: Выделить всё

{% extends "base.html" %}
{% block title %}Homepage{% endblock title %}
{% block section %}{% set section = 'Home' %}{% endblock section %}
{% block content %}

Lorem ipsum

{% endblock content %}
Но когда я запускаю его, на панели навигации просто отображается:

Код: Выделить всё

[url=/]Home[/url]
[url=/about.html]About[/url]
Классы не менялись и не добавлялись . В остальном шаблон работает нормально.
Почему это не работает? Что я неправильно понимаю в макросах Jinja или области видимости переменных?

Вернуться в «Python»