Jinja: ブロック割り当てスコープはインライン割り当てとは異なります

作成日 2016年06月27日  ·  5コメント  ·  ソース: pallets/jinja

親テンプレートでレンダリングされる子テンプレートに変数を設定したいと思います。 ブロック割り当てを使用すると、何もレンダリングされません。 インライン代入を使用すると、期待どおりに機能します。 私はPython2でJinja2.8を使用しています。

base.html

{{ content }}

bad.htmlブロック割り当てあり、何もレンダリングされません:

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

good.html 、正しくレンダリングされます:

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

最も参考になるコメント

この問題も発生しました。 簡単なテスト:

{% 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'ステートメントで同じ一貫性のない動作が発生します:

{% 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 評価