Jinja: O escopo da atribuição de bloco é diferente da atribuição em linha

Criado em 27 jun. 2016  ·  5Comentários  ·  Fonte: pallets/jinja

Quero definir uma variável em um modelo filho que será processado no modelo pai. Se eu usar atribuição de bloco, nada será renderizado. Se eu usar a atribuição embutida, ela funcionará conforme o esperado. Estou usando o Jinja 2.8 com Python 2.

base.html :

{{ content }}

bad.html com atribuição de bloco, nada renderizado:

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

good.html , renderiza corretamente:

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

Comentários muito úteis

Também tenho este problema. Teste simples:

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

Todos 5 comentários

Também tenho este problema. Teste simples:

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

Estou obtendo o mesmo comportamento inconsistente com a declaração 'com':

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

esses bugs provavelmente estão relacionados?

A instrução with não deve funcionar dessa forma, então isso é intencional. Não posso reproduzir o problema definido, porém independentemente disso no mestre.

Esqueça, eu vejo do que se trata esse problema.

Alterado em 45b59b522a542c21611214b352df049a3b6dbcb4

Esta página foi útil?
0 / 5 - 0 avaliações