Jinja: Der Blockzuweisungsbereich unterscheidet sich von der Inline-Zuweisung

Erstellt am 27. Juni 2016  ·  5Kommentare  ·  Quelle: pallets/jinja

Ich möchte eine Variable in einer untergeordneten Vorlage festlegen, die in der übergeordneten Vorlage gerendert wird. Wenn ich die Blockzuweisung verwende, wird nichts gerendert. Wenn ich die Inline-Zuweisung verwende, funktioniert sie wie erwartet. Ich benutze Jinja 2.8 mit Python 2.

base.html :

{{ content }}

bad.html mit Blockzuweisung, nichts gerendert:

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

good.html , wird korrekt gerendert:

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

Hilfreichster Kommentar

Habe auch dieses Problem. Einfacher Test:

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

Alle 5 Kommentare

Habe auch dieses Problem. Einfacher Test:

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

Ich erhalte das gleiche inkonsistente Verhalten mit der 'with'-Anweisung:

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

Diese Fehler sind wahrscheinlich verwandt?

Die with-Anweisung soll nicht so funktionieren, das ist also beabsichtigt. Ich kann das eingestellte Problem jedoch nicht unabhängig davon im Master reproduzieren.

Egal, ich verstehe, worum es in diesem Problem geht.

Geändert in 45b59b522a542c21611214b352df049a3b6dbcb4

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen