【问题标题】:Django template include overwrite <h1> tagDjango 模板包含覆盖 <h1> 标签
【发布时间】:2018-02-22 07:03:51
【问题描述】:

我有以下 html 文件。

banner.html

   <header class="intro2">
        <div class="intro-body">
            <div class="container">
                <div class="row">
                    <div class="col-md-8 col-md-offset-2">
                       <h1>{% block banner %}Bannertest{% endblock banner %}</h1>
                    </div>
                </div>
            </div>
        </div>
    </header>

test.html

{% extends 'banner.html' %}
    {% block banner %}
    Test
   {% endblock banner %}

我是 Django 新手,但我希望 H1 标题更新为 Test 而不是 Bannertest?

我做错了什么?

【问题讨论】:

    标签: django


    【解决方案1】:

    您需要扩展您的主 html 以不包含 替换

    {% include 'banner.html' %} 
    

    {% extends "banner.html" %}
    

    更多详情:include-vs-extends

    您的全新 html:

    {% extends 'banner.html' %}
    {% block banner %}Test{% endblock banner %}
    

    【讨论】:

    • 请看我的更新,我已经添加了所有的 HTML。使用 extends 给我一个错误。
    • 在同一个 html 文件中不能有两个扩展。
    • 我编辑您的问题,从您的 test.html 中删除所有内容并放入新代码
    • 谢谢,但现在不包括我的banner.html。
    • 抱歉我的错字 - 现已修正,试试吧
    【解决方案2】:

    对于块覆盖,您必须使用 {% extends 'banner.html' %} 而不是 {% include %}

    因此,标准方法不是像在 php 中那样为包含制作小片段,而是在子模板中扩展它时制作一个完整的模板,例如 base.html

    {% include %} 标签更适合带有参数的小部件,例如{% include '_form.html' style='light' some_param=some_value %}

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 2018-01-01
      • 1970-01-01
      • 2012-04-17
      • 2016-08-12
      • 2013-02-13
      相关资源
      最近更新 更多