Django进阶之模板继承

Django也有属于自己的模板继承功能。模板继承可以减少页面重复内容的定义,实现页面重用,更加灵活的实现web页面。主要通过block/extends标签来实现。

目录

Block标签

语法

Extends标签

语法

示例

定义父模板

定义子模板

增加详情页

 效果

总结


Block标签

在父模板中预留区域,子模板去填充

语法

{% block 标签名 %}

内容

{% endblock 标签名 %}

Extends标签

继承模板,需要写在模板文件的第一行

语法

{% extends ‘父模板路径’ %}

示例

定义父模板

创建base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客</title>
    <style>
        #header ul li{
            float:left;
            list-style:none;
            width:50px;
            border-left:1px solid #000;
            padding-left:20px;
            padding-bottom:10px;
        }

        #header > ul > li.first{
            border:none;
        }

        #content {
            height:80%;
            clear:both;
        }

        #footer {
            text-align:center;
        }
    </style>
</head>
<body>
    <div id="header">
        <ul>
            <li class="first"><a href="#">推荐</a></li>
            <li><a href="#">Python</a></li>
            <li><a href="#">PHP</a></li>
            <li><a href="#">Java</a></li>
            <li><a href="#">Go</a></li>
        </ul>
    </div>
    <div id="content">
        {% block content %}

        {% endblock content %}
    </div>
    <div id="footer">
        Powered by: xx网站 Copyright © 2023 Django3.0
    </div>
</body>
</html>

定义子模板

创建首页main.html

{% extends 'blog/base.html' %}

{% block content %}
  <h2>文章列表</h2>
  <ul>
    <li><a href="#">Django框架之模板标签</a></li>
    <li><a href="#">Django框架之模板继承</a></li>
  </ul>
{% endblock content %}

添加路由

path('extend1', views.extend1, name='extend1')

创建视图

def extend1(request):

    return render(request, 'blog/content.html')

增加详情页

创建detail.html

{% extends 'blog/base.html' %}

{% block content %}
  <h2>Django框架之模板继承</h2>
  <p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
    内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
    内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
    内容内容内容内容内容。。。。。。</p>
{% endblock content %}

设置路由

path('extendDetail/<int:id>', views.extendDetail, name='extendDetail'),

配置视图

def extendDetail(request, id):

    return render(request, 'blog/detail.html')

修改列表链接

<li><a href="{% url 'app:extendDetail' 1 %}">Django框架之模板标签</a></li>
<li><a href="{% url 'app:extendDetail' 2 %}">Django框架之模板继承</a></li>

 效果

总结

主要通过block/extends标签来实现。如何应用模板继承写了列表和详情使用的两个例子。具体使用,只需要结合这个例子来实现即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值