我有父模板,其中设置变量和此模板包含几个其他子模板,我想重用此变量。不幸的是,在子模板中,此变量为空。如何解决?
<!-- index.html -->
{%- set title= ' :: '.join((caption, page_title or '')) -%}
{%- set description= ' :: '.join((desc, meta_desc or '')) -%}
{%- block page_header -%}
{% include 'parts/_header.html' %}
<!-- I also tried do it with context without luck -->
{% include 'parts/_header.html' %}
{%- endblock page_header -%}
<!-- parts/header.html -->
<header class="header-wrapper">
<div class="header">
<div class="title"><h1 class="title">{{ title|safe }}</h1></div>
<div class="description">{{ description|safe }}</div>
</div>
</header>
UPD:经过小规模研究后,我发现{% block %}
部分与include
标记相关的问题在block
标记之外,然后提供了文档上下文。但出于某些原因,我想将其保留在block
内。
答案 0 :(得分:1)
根据我的经验,可以通过在{% set %}
声明中包含{% block %}
声明来解决此问题。在您的示例中:
<!-- index.html -->
{%- block page_header -%}
{%- set title= ' :: '.join((caption, page_title or '')) -%}
{%- set description= ' :: '.join((desc, meta_desc or '')) -%}
{% include 'parts/_header.html' %}
{%- endblock page_header -%}
如果你需要在块之外设置相同的变量,我只需将相同的行放两次,一次在块外,一次在内部。这对我来说似乎并不完美,但我不知道另一种方式。