Jinja: Область назначения блока отличается от встроенного назначения

Созданный на 27 июн. 2016  ·  5Комментарии  ·  Источник: pallets/jinja

Я хочу установить переменную в дочернем шаблоне, которая будет отображаться в родительском шаблоне. Если я использую назначение блоков, ничего не отображается. Если я использую встроенное присваивание, оно работает должным образом. Я использую Jinja 2.8 с Python 2.

base.html :

{{ content }}

bad.html с назначением блока, ничего не отображается:

{% extends 'base.html' %}
{% set content %}
Hello, World!
{% endset %}

good.html , отображается правильно:

{% extends 'base.html' %}
{% set content = 'Hello, World!' %}

Самый полезный комментарий

У меня тоже есть эта проблема. Простой тест:

{% extends "..." %}
...
{% set aaa = 'test' %}
{% set bbb %}
    <a href="/">bar</a>
{% endset %}
...
{% block some_block %}
 {{ aaa }} {# renders 'test' #}
 {{ bbb }} {# renders empty string #}
{% endblock %}

Все 5 Комментарий

У меня тоже есть эта проблема. Простой тест:

{% extends "..." %}
...
{% set aaa = 'test' %}
{% set bbb %}
    <a href="/">bar</a>
{% endset %}
...
{% block some_block %}
 {{ aaa }} {# renders 'test' #}
 {{ bbb }} {# renders empty string #}
{% endblock %}

У меня такое же противоречивое поведение со статусом "с":

{% with %}
{% set something = 'werd' %}
{% set something_block %}
werd werd werd
{% endset %}
{% endwith %}
...
{{ something }} {# renders empty string #}
{{ something_block }} {# renders 'werd werd werd' #}

эти ошибки, вероятно, связаны?

Оператор with не должен работать таким образом, поэтому это сделано намеренно. Однако я не могу воспроизвести поставленную задачу независимо от этого в мастере.

Да ладно, я понимаю, о чем идет речь.

Изменено в 45b59b522a542c21611214b352df049a3b6dbcb4

Была ли эта страница полезной?
0 / 5 - 0 рейтинги