Jinja: El alcance de la asignación de bloques es diferente a la asignación en línea

Creado en 27 jun. 2016  ·  5Comentarios  ·  Fuente: pallets/jinja

Quiero establecer una variable en una plantilla secundaria que se representará en la plantilla principal. Si utilizo la asignación de bloques, no se procesa nada. Si utilizo la asignación en línea, funciona como se esperaba. Estoy usando Jinja 2.8 con Python 2.

base.html :

{{ content }}

bad.html con asignación de bloque, nada renderizado:

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

good.html , se renderiza correctamente:

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

Comentario más útil

También tengo este problema. Prueba simple:

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

Todos 5 comentarios

También tengo este problema. Prueba simple:

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

Obtengo el mismo comportamiento inconsistente con la declaración 'con':

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

estos errores probablemente estén relacionados?

Se supone que la declaración with no funciona de esa manera, por lo que es intencional. Sin embargo, no puedo reproducir el problema del conjunto independientemente de esto en master.

No importa, veo de qué se trata este problema.

Cambiado en 45b59b522a542c21611214b352df049a3b6dbcb4

¿Fue útil esta página
0 / 5 - 0 calificaciones