Django嵌套';与';和';区块';标签

Django嵌套';与';和';区块';标签,django,Django,我有如下base.html模板: <p>{% block a %}{% endblock %}</p> <p>{% block b %}{% endblock %}</p> 但结果是: <p></p> <p></p> 而不是: <p>foo</p> <p>foo</p> foo 福 有什么解决方法吗?在继承的模板中,django查找块中的代

我有如下base.html模板:

<p>{% block a %}{% endblock %}</p>
<p>{% block b %}{% endblock %}</p>
但结果是:

<p></p>
<p></p>

而不是:

<p>foo</p>
<p>foo</p>
foo


有什么解决方法吗?

在继承的模板中,django查找
中的代码,这意味着它无法识别
块之外的
的存在。因此,您唯一的选择是在每个块中包含with

{% block a %}    
    {% with description="foo" %}
        {{ description }}
    {% endwith %}    
{% endblock %}

虽然对于单个调用来说,不值得使用带有的
,但唯一的其他选项是通过上下文传递
说明
更新:对于我的特定情况,它不起作用。见评论

在阅读了Sayse的答案并更好地理解了块的工作原理后,我提出了以下解决方案:

base.html:

{% block wrapping_block %}
    {% block a %}
    {% endblock %}

    {% block b %}
    {% endblock %}
{% endblock %} 
index.html:

{% extends "base.html" %}

{% block wrapping_block %}
    {% with description='foo' %}
        {% block a %}
            {{ description }}
        {% endblock %}

        {% block b %}
            {{ description }}
        {% endblock %}
    {% endwith %}
{% endblock %}

非常有趣的方法,我很惊讶它能工作,我猜是因为您定义了一个块,用于继承自
index.html
的内容。我仍然想知道
description
实际上是用来做什么的,但很高兴你发现了一些有用的东西!这一个的问题是,“包装块”内部以及“a”和“b”外部的任何内容都将在子模板中剥离。刚刚意识到。。。哎呀!我尝试对meta标记和opengraph标记使用相同的值,比如title和description。在某些页面中,这是在模板中定义的,只有几个单词长。我想使用一个变量来保持它的一致性。我想我还是要重复一遍。可能是的,描述的价值来自哪里?我仍然不明白为什么这需要在块内部完成,而不仅仅是在基本模板中完成。例如“description”的值不在上下文中,而是在模板中硬编码,并且每个子页面都有不同的描述。
{% extends "base.html" %}

{% block wrapping_block %}
    {% with description='foo' %}
        {% block a %}
            {{ description }}
        {% endblock %}

        {% block b %}
            {{ description }}
        {% endblock %}
    {% endwith %}
{% endblock %}