Jinja: 块分配范围与内联分配不同

创建于 2016-06-27  ·  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'陈述具有相同的不一致行为:

{% 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 等级