【问题标题】:How to test for use of a django template block?如何测试使用 django 模板块?
【发布时间】:2010-10-10 16:35:18
【问题描述】:

我想做以下事情:

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

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

还有其他条件可以做到这一点吗?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

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

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

    首先,Parsing until another block tag。这将为您提供如何解析的基础知识。

    第二,Parsing until another block tag and saving contents。通过在自定义标签内放置一个块标签,您可以检测内容并根据需要对其进行包装。这应该可行,因为我相信内部块标签将首先被解析。如果这不起作用,子类化 django 提供的现有块模板标签来实现你的特殊魔法。

    【讨论】:

    • 谢谢...我需要做一些工作并学习按照您的规定提出答案。再次感谢。
    【解决方案2】:

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

    <div id="appnav">
        <ul class="tabs">
            {% block appnav %}
                <script>document.getElementById("appnav").style.display = "none"</script>
            {% endblock %}
        </ul>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 2012-03-25
      • 1970-01-01
      相关资源
      最近更新 更多