django学习-7.html模板中include标签使用场景
1.前言
假设一个公司A有一个网站B,且网站B有5个不同的页面分别为C1,C2,C3,C4,C5。
那么,我们在打开这5个不同页面后去查看页面的整体内容,会发现每个页面的顶部内容、底部内容都一模一样。所以我们可以尝试把这些每个页面都拥有的相同的内容单独抽离出来放在另外的html页面进行维护。
类似于python语言里面的函数概念,比如函数D1和函数D2的内部都会使用一部分有相同代码逻辑的代码块,我们把这一部分有相同代码逻辑的代码块写成函数D,然后函数D被函数D1和函数D2调用,这样就能实现代码的高效复用和维护。
django的html模板也有类似的功能,用include标签可以实现。
include标签主要实现的作用:{% include %} 标签允许在当前模板中包含其它的模板的内容。
2.一个html页面包含的主要内容
2.1.第一步,我们在【helloworld/hello/templates/】里新建一个【base.html】,具体内容如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>这是base页面的标题</title>
</head> <body> <section>
<h1>顶部导航</h1>
<p>顶部导航的文案可以是一些欢迎语或者提示语或者是网站的相关宣传语等等。比如现在的顶部导航文案可以是:“欢迎来到厦门-小洪的官网首页!”</p>
<hr>
</section> <section>
<h1>body正文</h1>
<p>每个页面的正文内容和div布局基本都是不一样的。</p>
</section> <section>
<br><br><br><br><hr>
<h1>底部导航</h1>
<p>底部一般会展示这些内容:友情链接,网站导航,版权,公司地址等等。</p>
</section> </body> </html>
2.2.第二步,我们在【helloworld/hello/views.py】里新建一个视图函数【base】,具体内容如下。
2.3.第三步,我们在【helloworld/helloworld/urls.py】里新建一个url匹配规则,具体内容如下。
2.4.第四步,启动django项目【helloworld】的服务,然后在任一浏览器输入该地址【http://127.0.0.1:8000/base/】,得到的页面展示内容如下。
我们可以看到,【base.html】页面有这三块内容:顶部导航、body正文、底部导航。
一般情况下,顶部导航和底部导航是不变的,变的只是body正文的内容,所以我们接下来可有把顶部导航和底部导航的对应的html代码块分别单独抽离出来并分别用新的html页面来存储和维护。
2.5.第五步,我们在【helloworld/hello/templates/】里新建一个【top.html】,具体内容如下。
2.6.第六步,我们在【helloworld/hello/templates/】里新建一个【end.html】,具体内容如下。
3.include标签的使用
3.1.第一步,我们在【helloworld/hello/templates/】里新建一个【new_page.html】,具体内容如下。
3.2.第二步,我们在【helloworld/hello/views.py】里新建一个视图函数【newPage】,具体内容如下。
3.3.第三步,我们在【helloworld/helloworld/urls.py】里新建一个url匹配规则,具体内容如下。
3.4.第四步,启动django项目【helloworld】的服务,然后在任一浏览器输入该地址【http://127.0.0.1:8000/new_page_666/】,得到的页面展示内容内容如下。
4.公共页面里也允许传模板参数
【top.html】和【end.html】这两个公共页面里都允许传模板参数。
我们可以拿【top.html】来进行相关调试。
4.1.第一步,我们在【helloworld/hello/views.py】里对已存在的视图函数【newPage】进行改造,具体改造后的新内容如下。
4.2.第二步,我们在【helloworld/hello/templates/top.html】里插入多个模板变量,具体内容如下。
4.3.第三步,启动django项目【helloworld】的服务,然后在任一浏览器输入该地址【http://127.0.0.1:8000/new_page_666/】,得到的页面最新展示内容如下。
django学习-7.html模板中include标签使用场景的更多相关文章
- Django 模板中 include 标签使用小结
include 标签允许在模板中包含其它的模板的内容. 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串. 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 { ...
- 测试开发之Django——No6.Django模板中的标签语言
模板中的标签语言 1.if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即:变量存在,非空,不是布尔值假),系统会显示在{% if %} 和 {% endi ...
- android中include标签使用详解
android中include标签是为了便于控件的覆用的一个很好解决方案. 但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看. include标签用法. ...
- Django模板中include的标签的使用
在很多网站中,基本上的都会有一个开头和一个结尾,在每一个网页中都会显示.相对于这种的来说,在Django中,最好的方法就是使用include的标签,在每一个模板中都加入这个开头和结尾的标签. 官方文档 ...
- Django学习笔记之模板
模板 模板介绍 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面. 目前市面上有非常多的模板系 ...
- Django学习之 - 基础模板语言
模板语言if/else/endif {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} &l ...
- Django学习系列之模板
什么是django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签) 模板通常用于产生HTML 如何使用模板 创建一个Tem ...
- Django学习日记05_模板_模板语言
Variables 在模板中,使用两个大括号包含变量的方式来使用变量: {{ name }} 该变量应该作为键值对中的键,在Context中能被查找到. Tags 模板中使用Tags来进行简单的逻辑: ...
- Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版
include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...
随机推荐
- Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理
Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理 方案一:服务器端用 websocket 接受 rtsp ,然后,推送至客户端 实现步骤: 方案二:使用 ffmpeg + nginx 把 ...
- Lambda表达式及相关练习
语法格式一无参数无返回值 语法格式二有一个参数并且无返回值 语法格式三若只有一个参数小括号可以省略不写 语法格式四有两个以上的参数有返回值并且Lambda体中有多条语句 语法格式五若Lambda体中只 ...
- 小程序navigateTo和redirectTo跳转的区别与应用
最近在做小程序的跳转,发现navigateTo的跳转无法满足业务需求,所以特地记录下 业务需求 类似一个淘宝的在订单界面选择地址的功能,从A页面点击跳转到B页面的地址列表页面,B页面可以选择已有的地址 ...
- TcaplusDB常见问题-数据库原理类
gameserver 如何剔除某个无效的 tcaproxy(接入层)节点? TcaplusDB API 在这里对 tcaproxy 异常做了容灾的处理,API 剔除无效的 tcaproxy 进程的方式 ...
- B - How Many Tables (多少桌)
题目大致意思: 有n个人在一起吃饭,有些人互相认识.认识的人想坐在一起,不想跟陌生人坐.例如A认识B,B认识C,那么A.B.C会坐在一张桌子上. 给出认识的人,问需要多少张桌子 Today is Ig ...
- 牛客挑战赛33 C 艾伦的立体机动装置(几何)
思路: 我们需要枚举展开多少条边 然后把上底面的点放到和下底面一个平面 然后算两点之间的距离 注意判断直线与线段是否有交点 #include <bits/stdc++.h> using n ...
- CentOS环境下搭建青岛大学OJ
1.安装必要的依赖sudo yum updatesudo yum -y install epel-releasesudo yum -y install python-pipsudo yum clean ...
- Codeforces Round #666 (Div. 2)
比赛链接:https://codeforces.com/contest/1397 A. Juggling Letters 题意 给出 $n$ 个字符串,可在字符串间任意移动字母,问最终能否使这 $n$ ...
- Codeforces #624 div3 C
You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...
- Warm up HDU - 4612 树的直径
题意:给出n个点和m条边的无向图,存在重边,问加一条边以后,剩下的桥的数量最少为多少. 题解: 你把这个无向图缩点后会得到一个只由桥来连接的图(可以说这个图中的所有边都是桥,相当于一棵树),然后我们只 ...