extend模板继承

extend模板继承
创建模板文件HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .page-header{
            height: 50px;
            background-color: rebeccapurple;
        }
        .page-body .menu{
            height: 400px;
            background-color: antiquewhite;
            float: left;
            width:20%;
        }
        .page-body .content{
            height: 400px;
            background-color: cornflowerblue;
            float: left;
            width: 80%;
        }
        .page-footer{
            height: 50px;
            background-color: darkcyan;
            clear:both;
        }
    </style>
</head>
<body>
div>div.page*3+tab 快速创建标签框架
<div>
    <div class="page-header"></div>
    <div class="page-body">
        <div class="menu">
             <a href="/app01/order/">订单</a><br>
            <a href="/app01/shopping/">购物车</a>
        </div>
        {# 自定义部分 如果不进行自定义,就直接显示模板#}
        <div class="content">
            {% block content%}
            模板
            {% endblock %}
        </div>
    </div>
    <div class="page-footer"></div>
</div>
</body>
</html>

继承部分order
{{ block.super }} 拿出父级block中的内容

{% extends "mo.html" %}
{% block content %}
    {{ block.super }} 订单
{% endblock %}

继承部分shopping

{% extends "mo.html" %}
{% block content %}
购物车
{% endblock %}

url

urlpatterns = [
	url(r'order',views.order),
	url(r'shopping',views.shop),
]

views文件

from django.shortcuts import render, HttpResponse, redirect
def order(req):
	return render(req,"order.html")
def shop(req):
	return render(req, "shopping.html")

如果在模板中使用 {% extends %} ,必须保证其为模板中的第一个模板标记。 否则,模板继承将不起作用。
一般来说,基础模板中的 {% block %} 标签越多越好。子模板不必定义父模板中所有的代码块,因此用合理的缺省值对一些代码块进行填充,然后只对子模板所需的代码块进行(重)定义。
需要访问父模板中的块的内容,使用 {{ block.super }}标签,会表现出父模板中的内容。 如果只想在上级代码块基础上添加内容,而不是全部重载,就非常有用。
不允许在同一个模板中定义多个同名的 {% block %} 。 存在这样的限制是因为block 标签的工作方式是双向的。

匿名

发表评论

匿名网友