Я использую Jinja2 для рендеринга моего интерфейса (и python находится на бэкэнд). Каждая страница будет иметь другое изображение на его вершине, как это:Блок-тег внутри url_for() в Jinja2
<header>
<img src="static/img/pic1.png">
</header>
Я использовал url_for(), чтобы получить правильный путь моей статической папки:
<header>
<img src="{{ url_for('static', filename='img/pic1.png') }}">
</header>
До сих пор, так хорошо , Но я хотел бы поместить блок внутри параметра filename, чтобы я мог повторно использовать код и только перезаписывать имя изображения. Это то, что я пытаюсь:
<header>
<img src="{{ url_for('static', filename='{% block img %}img/pic1.png{% endblock %}') }}">
</header>
Но это не работает, это окончательный код, который оказывает Jinja2:
<header>
<img src="/static/%7B%25%20block%20img%20%25%7Dimg/pic1.png%7B%25%20endblock%20%25%7D">
</header>
Как вы можете видеть, Jinja2 не признает блок тег как выражение и рассматривает его как строку. Если бы это сработало, я мог бы установить изображение каждой страницы только с помощью этого кода:
{% extends "base.html" %}
{% block img %}img/pic2.png{% endblock %}
...
Не могли бы помочь, пожалуйста? Кстати, сообщение this мне не помогло.
и как другие страницы будут повторно использовать этот код для создания * IMG/pic2 * для примера? – renatov
Ну, я добавляю ссылки на документ (что очень хорошо) и небольшой пример. –
Спасибо, это сработало, но мне не нужно импортировать, если я только расширяю шаблон с макросом. Если бы вы могли, пожалуйста, разместите пример с примерами без импорта, я выберу ваше сообщение в качестве ответа, чтобы служить для дальнейшей справки. – renatov