5

我想做以下事情:

{% if appnav %}
<hr />
<div id="appnav">
    <ul class="tabs">
        {% block appnav %}{% endblock %}
    </ul>
</div>
{% endif %}

...但是,在继承链的下游测试当前对模板块的使用似乎不起作用。

是否有其他条件可以做到这一点?

4

2 回答 2

4

模板语言并不能准确地提供您正在寻找的内容。子模板可以用 调用父块{{ block.super }},但父模板不能引用子模板。

您最好的选择可能是编写自定义模板标签。模板手册中有两个部分可供查看。

首先,解析直到另一个块标记。这将为您提供如何解析的基础知识。

其次,解析直到另一个块标签并保存内容。通过在自定义标签内放置一个块标签,您可以检测内容并根据需要对其进行包装。这应该可行,因为我相信内部块标签将首先被解析。如果这不起作用,请将 django 提供的现有块模板标签子类化以实现您的特殊魔法。

于 2009-03-06T16:51:43.143 回答
-1

如果您正在寻找一个简单的解决方案。您可以将元素隐藏为默认 html。

<div id="appnav">
    <ul class="tabs">
        {% block appnav %}
            <script>document.getElementById("appnav").style.display = "none"</script>
        {% endblock %}
    </ul>
</div>
于 2020-06-20T15:59:10.083 回答