在Django中你可以有一个模板基础层继承自另一个吗?

时间:2014-09-25 15:24:37

标签: html django templates inheritance django-templates

在Django中你可以有一个模板基础层继承自另一个吗?

例如:

base.html文件

    <!DOCTYPE html>
     <html>

     {% load staticfiles %}

     <meta charset="UTF-8">
     <title>Cloud Fabric || Product Calculator</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">

{% block additionalStyles %}

    <link rel="stylesheet" type= "text/css" href = "{% static 'fabric/editionsStylesheet.css' %}" />

    {% endblock additionalStyles %}

    </head>

    <body>

    <div id="header">
        <h1 id="HeaderH1"><i>{{EditionName}}</i></h1>
    </div>

    {% block content %}

    {% endblock content %}

    </body>
    </html>

那么这将是主要的基础层现在是否有办法让另一个基础层从网站的不同部分继承它?像这样:

base2.html

 {% extends "base.html" %}

 {% block additionalStyles %}

    {% load staticfiles %}
<link rel="stylesheet" type= "text/css" href = "{% static 'fabric/monthlyEditionsStylesheet.css' %}" />

{% endblock additionalStyles %}

{% block content %}


    <h1 id="chooseMonthH1">Choose The Monthly Range:</h1>
                                                            {% block monthlyForm %}




    {% endblock monthlyForm %}

         <button type="submit" class="pure-button pure-button-primary" id="subButton">Submit</button>

    {% block formend %}

         </form>

    {% endblock formend %}

</div>

{% endblock content %}

那么进一步的html可以继承自base2.html吗?我已经尝试了这个但是表格停止了工作并且css搞砸了。

1 个答案:

答案 0 :(得分:0)

您的base2.html模板会覆盖additionalStyles模板中base.html块的内容。

要保留父级的阻止内容,您必须使用魔术block.super变量,如下所示:

{% extends "base.html" %}

{% block additionalStyles %}
    {{ block.super }}
    <link ... >
{% endblock additionalStyles %}

上述表示法将内容附加到additionalStyles块。