【问题标题】:django template extend - all but one templatedjango 模板扩展 - 除了一个模板之外的所有模板
【发布时间】:2016-07-04 06:15:15
【问题描述】:

我有一段 html,我想在所有页面中显示,除了一个。如果不是这个页面,我会把它放在base.html 中并扩展。

除了将代码单独放在所有需要的页面中之外,还有其他方法吗?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    来自模板继承docs

    模板引擎会注意到 base.html 中的 {% block %} 标签,并将这些块替换为子模板的内容。

    但是

    如果子模板没有定义块,则从 而是使用父模板。 {% block %} 标签内的内容 父模板始终用作后备。

    所以在这种情况下,您可以在 base.html 中使用 {% block %} 标签。

    {% block content %}
     <!-- Your content here-->
    {% endblock %}
    

    您不必在每个模板中定义该块,因为父 {% block %} 用作后备。

    {% extends 'base.html' %}
    

    因此,在您的特殊情况下,只需定义没有数据或其他内容的 {% block %} 标记。

    {% extends 'base.html' %}
    
    {% block content %}
     <!-- Nothing goes here -->
    {% endblock content %}
    

    【讨论】:

      【解决方案2】:

      您可以将其放入一个块中,该块会被任何内容覆盖以使其被忽略。例如:

      base.html

      {% block content %}
          <div>
              This should show on all pages except for this one
          </div>
      {% endblock content %}
      

      included-page.html(该页面将包含 div)

      {% extends 'base.html' %}
      

      ignored-page.html(该页面上的 div 将被忽略)

      {% extends 'base.html' %}
      
      {% block content %}
      {% endblock content %}
      

      【讨论】:

        猜你喜欢
        • 2016-02-23
        • 2019-05-22
        • 2010-11-27
        • 1970-01-01
        • 2014-01-30
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多