广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django中模板的继承及引用实现
  • 575
分享到

Django中模板的继承及引用实现

2024-04-02 19:04:59 575人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

引言 大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。 到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的

引言

大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。

到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的;而且有些数据不一样的部分,它们前端的排版格式却是一模一样的哦!

你肯定会心生疑问——难道这些页面全都要一个个敲代码做嘛!这也太绝望了吧!!!

但是——不要忘记了!程序猿一大原则是:绝不做重复的事!

所以对于上述现象,就涉及到了一个知识点——模板的继承与引用!!!

1.模板的继承与引用

Django模版引擎中最强大也是最复杂的部分就是模版继承了。 模版继承可以让你创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks 。

(1)第一部分:常规思想——每个前端页面都单独码:(下面示范三个前端页面,对应三个html模板文件及其效果展示!)

①第一个html模板:

a_first.html文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .top{
            height: 200px;
            background: darkGoldenrod;
        }
        .con{
            height: 500px;
            background: aqua;
        }
        .but{
            height: 150px;
            background: sandybrown;
        }
    </style>
</head>
<body>
<div>
    <div class="top">头部</div>
    <div class="con">内容一</div>
    <div class="but">底部</div>
</div>
</body>
</html>

效果展示:

在这里插入图片描述

②第二个html模板:

a_second.html文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .top{
            height: 200px;
            background: darkgoldenrod;
        }
        .con{
            height: 500px;
            background: aqua;
        }
        .but{
            height: 150px;
            background: sandybrown;
        }
        .con .left{
            width: 70%;
            float: left;
            height: 100%;
            background: red;
        }
        .con .right{
            width: 30%;
            float: left;
            height: 100%;
            background: #352fff;
        }
    </style>
</head>
<body>
<div>
    <div class="top">头部</div>
    <div class="con">
        <div class="left">内容二</div>
        <div class="right">广告</div>
    </div>
    <div class="but">底部</div>
</div>
</body>
</html>

效果展示:

在这里插入图片描述

③第三个html模板:

a_third.html文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .top{
            height: 200px;
            background: darkgoldenrod;
        }
        .con{
            height: 500px;
            background: aqua;
        }
        .but{
            height: 150px;
            background: sandybrown;
        }
        .con .left{
            width: 70%;
            float: left;
            height: 100%;
            background: #f338ff;
        }
        .con .right{
            width: 30%;
            float: left;
            height: 100%;
            background: #24ff44;
        }
    </style>
</head>
<body>
<div>
    <div class="top">头部</div>
    <div class="con">
        <div class="left">内容三</div>
        <div class="right">广告</div>
    </div>
    <div class="but">底部</div>
</div>
</body>
</html>

效果展示:

在这里插入图片描述

分析——不难看出,这三个前端界面头部和底部是一模一样的;后两个的中间内容部分右侧也都是广告页面。而我们为了实现这三个html界面分别码了那么多重复的代码,费时费力,考虑到类可以继承,那么咱的html模板能否继承呢? 答案是肯定的,下面咱们来使用模板的继承看一看有多牛逼:

(2)第二部分:高级思想——使用模板的继承及引用!

在这里插入图片描述

①编写父级模板base.html:

编写父级模板原则:相同的部分直接编写代码,使子模板直接继承(模板继承使用extends标签实现);不同的部分通过使用block来给子模板开放接口,使子模板可以进行覆写(模板覆写使用block标签实现)


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .top{
            height: 200px;
            background: darkgoldenrod;
        }
        .con{
            height: 500px;
            background: aqua;
        }
        .but{
            height: 150px;
            background: sandybrown;
        }
        .con .right{
            width: 30%;
            float: left;
            height: 100%;
            background: #352fff;
        }
    </style>
    {% block style %}{% endblock %}			  {#让子模板可以对CSS样式进行覆写!#}
</head>
<body>
<div>
    <div class="top">头部</div>
    <div class="con">
        {% block con %}
            {% block left %}

            {% endblock %}

            {% block right %}
                <div class="right">广告</div>
            {% endblock %}
        {% endblock %}
    </div>
    <div class="but">底部</div>
</div>
</body>
</html>

②第一个html模板: a_first.html文件:


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


{% block con %}
    内容一
{% endblock %}

②第二个html模板:

a_second.html文件:


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

{% block style %}
    <style>
            .con .left{
            width: 70%;
            float: left;
            height: 100%;
            background: red;
        }
    </style>
{% endblock %}

{% block left %}
    <div class="left">内容二</div>
{% endblock %}

②第三个html模板: a_third.html文件:


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

{% block style %}
    <style>
        .con .left{
            width: 70%;
            float: left;
            height: 100%;
            background: #f338ff;
        }
        .con .right{
            width: 30%;
            float: left;
            height: 100%;
            background: #24ff44;
        }
    </style>
{% endblock %}

{% block left %}
    <div class="left">内容三</div>
{% endblock %}

(3)使用模板的继承及引用实现会发现跟上面不使用的效果一模一样!!!而且咱的代码简洁太多 。

下面来总结一下模板的继承及引用:

模板继承使用extends标签实现。通过使用block来给子模板开放接口。

  • extends必须是子模板中第一个出现的标签。
  • 子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。
  • 如果出现重复代码,就应该考虑使用模板。
  • 尽可能多的定义block,方便子模板实现更细的需求。
  • 如果在某个block中,要使用父模板的内容,使用block.super获取。

到此这篇关于Django中模板的继承及引用实现的文章就介绍到这了,更多相关Django模板的继承及引用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django中模板的继承及引用实现

本文链接: https://www.lsjlt.com/news/133638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django中模板的继承及引用实现
    引言 大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。 到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的...
    99+
    2022-11-12
  • Python Django框架介绍之模板标签及模板的继承
    目录一、标签语法二、常见标签三、标签例子四、模板的继承一、标签语法 由%}和 {% 来定义的,例如:{%tag%} {%endtag%},完整的标签有开始就有结束,如条件语句,有条件...
    99+
    2022-11-12
  • django中模板继承与ModelForm怎么用
    这篇文章主要讲解了“django中模板继承与ModelForm怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中模板继承与ModelForm怎么用”吧!模板的继承完美在写ht...
    99+
    2023-06-30
  • Django模板继承与模板的导入实例详解
    目录一:模版的继承1.什么是模板继承2.使用继承流程原理3.模板继承语法二:模板的继承使用1.案例需求2.总结模板继承三:模版的导入1.模板导入2.模板导入格式3.模板导入使用4.使...
    99+
    2022-11-13
  • django中模板继承与ModelForm实例详解
    目录模板的继承form和ModelForm使用方法总结模板的继承 完美在写html的时候会发现,自己多个html文件中又好多东西是一样的,包括静插件的引入 还有有些简单的css样式都...
    99+
    2022-11-10
  • PHP中Smarty模板如何实现模板继承
    这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!{extends}模板继承中,你可以在子模板内使用{extends}标签来扩展父...
    99+
    2022-10-19
  • Django使用jinja2模板的实现
    目录jinja2介绍安装jinja2模块Django配置jinja2jinja2自定义过滤器CSRFCSRF攻击示意图防止 CSRF 攻击在 Django项目中解决 CSRF 攻击j...
    99+
    2023-02-23
    Django jinja2模板 Django jinja2
  • JavaScript中常见的七种继承及实现
    目录1. 原型链继承2. 借用构造函数继承3. 组合继承4. 原型式继承5. 寄生式继承6. 寄生式组合继承7. class继承1. 原型链继承 原型链继承是 JavaScript ...
    99+
    2023-03-08
    JavaScript实现继承方式 JavaScript继承
  • Django 模板中常用的过滤器实现
    模版常用过滤器 在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|来使用。 ...
    99+
    2022-11-12
  • Django模板中变量的运算实现
    在django中的模板下我们知道变量使用{{xxx}}来呈现,可是当出现两个变量进行运算怎么处理那? #加法: {{value|add:value2}} #返回的结果是value...
    99+
    2022-11-12
  • Django模板中如何实现常用的过滤器
    这篇文章主要介绍Django模板中如何实现常用的过滤器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!模版常用过滤器在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。...
    99+
    2023-06-15
  • PHP用trait或组合模式实现多继承的方法
    本篇内容主要讲解“PHP用trait或组合模式实现多继承的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP用trait或组合模式实现多继承的方法”吧!PHP的类继承只能是单继承,不能多继...
    99+
    2023-06-20
  • Django零基础入门之自定义标签及模板中的使用
    目录自定义标签:第一部分(1)视图函数编写:(2)编写模板文件:(3)自定义标签实现:(4)效果展示:第二部分(1)视图函数编写:(2)编写模板文件:(3)自定义标签实现:第三部分紧...
    99+
    2022-11-12
  • Django零基础入门之自定义过滤器及模板中的使用
    目录引言自定义过滤器(1)首先(2)内置过滤器lower的使用:(3)自定义过滤器的使用:(4)模板中使用自定义过滤器:(5)效果展示:引言 分析Django内置的模板过滤器: 通...
    99+
    2022-11-12
  • javascript中怎么实现一个基于DOM的模板引擎
    本篇内容主要讲解“javascript中怎么实现一个基于DOM的模板引擎”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中怎么实现一个基于DO...
    99+
    2022-10-19
  • 织梦DEDECMS实现留言板调用模板头部及底部的方法
    本文实例讲述了织梦DEDEcms实现留言板调用模板头部及底部的方法。分享给大家供大家参考。具体实现方法如下: 第一步:打开"/include/common.func.php" 然后在该文件中加入一个函...
    99+
    2022-06-12
    织梦DEDECMS 留言板 调用 模板 头部 底部 方法
  • Android中的多进程通信怎么利用继承Binder类实现
    Android中的多进程通信怎么利用继承Binder类实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。服务端代码,BinderService.java:首先继...
    99+
    2023-05-31
    android 多进程 binder
  • JS中原型链和利用原型实现继承的示例分析
    小编给大家分享一下JS中原型链和利用原型实现继承的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原型链原型链是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__proto...
    99+
    2022-10-19
  • Python设计模式中单例模式的实现及在Tornado中的应用
    单例模式的实现方式 将类实例绑定到类变量上 class Singleton(object): _instance = None def __new__(cls, *args): if ...
    99+
    2022-06-04
    模式 Python Tornado
  • C++中memcpy函数的使用以及模拟实现
    目录前言一、什么是memcpy二、memcpy与strcpy的区别1.strcpy2.memcpy三、模拟实现memcpy总结前言 memcpy函数如何使用,以及如何实现我们自己的m...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作