Django中extend和block的使用

本文介绍了一个关于模板继承与重写的实战案例,通过具体的代码示例展示了如何使用 Django 的模板语言来实现页面布局的复用及内容的定制化替换。
  • {%extend   公共模板html文件名 %}

    需要写在子模板中的开头

  • {% block   模板块名%}
    …… 写在公共模板中为可以被继承并重写的内容,
    写在子模板中为替换公共模板中相同名字的模板块内容
    {% endblock %}

  • {{ block.super }}  写在子模板中的模板块中,可以在显示父模板块中的内容同时添加新内容

这是templates下面的base.html中的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <div class="cont"><a href="/blog/shopcart/">购物车</a></div>
</div>
{% block first %}
    <div style="width: 100px;height: 100px;background-color: #5eff2e;">
        我是公共模板的第一个模板块
    </div>
{% endblock %}
<div>
    <span>这是公共模板的内容</span>
</div>

{% block second %}
{#   公共模版的块中如果有内容,则子模板会继承此内容,子模板可以通过添加内容覆盖 #}
<div style="width: 100px;height: 100px;background-color: #ff0062;">
    我是公共模板的第二个模板块
</div>
{% endblock %}
</body>
</html>

我让子模板中覆盖first块中的内容,second中的内容通过{{ block.super }}显示到子模板中,
shopcart.html中的代码如下:

{% extends "base.html" %}
{#位置要放在页面的最上面#}

{% block first %}
    <div>
        <div class="cont">这是购物车页面,替换了第一个模板块</div>
    </div>
{% endblock %}

{% block second %}

    <span>这是购物车的内容,下面是通过block.super显示的公共模板内容</span>
    {{ block.super }}
{% endblock %}

extend必须放在最上面继承公共模板,结果显示:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值