django模板语法学习之include示例详解


Posted in Python onDecember 17, 2017

前言

在很多网站中,基本上的都会有一个开头和一个结尾,在每一个网页中都会显示。相对于这种的来说,在Django中,最好的方法就是使用include的标签,在每一个模板中都加入这个开头和结尾的标签。

include标签使用

假如我们有以下模板index.html,代码为:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<div>网页公共头部部分</div>
<h2> 网页body部分 </h2>
<div>网页公共底部部分</div>
</body>
</html>

做过web开发的童鞋知道大部分网页的公共头部,公共底部部分代码每个页面都一样,那么就应该将其单独拿出做为一个html, 这样修改这部分代码时候,不需要每个页面都修改, 所以在django中我们可以这么做:

top.html

<div>网页公共头部部分</div>

bottom.html

<div>网页公共底部部分</div>

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title>Title</title> 
</head> 
<body> 
{% include 'top.html' %} 
<h2> 网页body部分 </h2> 
{% include 'bottom.html' %} 
</body> 
</html>

我们可以使用django模板引擎的Include语法,来将单独的页面包含到当前模板页面中。有同学有疑问,那我们通过视图传递给模板的上下文,在被包含的模板中可以使用吗?可以直接使用。

假如我们有如下视图: 

def index(request): 
 return render(request, 'index.html', {'a': 100, 'b': 200})

该django的视图函数,传递给模板并渲染模板。

top.html修改如下:

<div>网页公共头部部分:{{ a }}</div>

这么使用是没有问题的。

我这里有这样的一个问题,假如所有的页面都使用共同的头部top.html, 可能针对1.html 2.html 3.html所使用的头部有些样式不一样,所需top.html:

<div classs='acss'>网页公共头部部分</div>

但是对于5.html, 6.html使用的头部样式为:

<div class='bcss'>网页公共头部部分</div>

 

很显然,如果直接通过include方式包含公共头部,会导致一些页面显示问题。既然部分参数不一样,include允许我们传递参数给被include的模板,我们可以使用with语法,那么问题解决如下:

{{ % include 'top.html' with mycss='acss' % }}

top.html可修改如下:

<div class='{{mycss}}'>网页公共头部部分</div>

被包含模板中部分参数,由我们include的时候动态指定,那么top.html就不会因为细微差别而编写多份代码了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python实现探测socket和web服务示例
Mar 28 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
深入了解Python数据类型之列表
Jun 24 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
Python中的引用和拷贝实例解析
Nov 14 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
python 制作网站小说下载器
Feb 20 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 Python
Python中rapidjson参数校验实现
Jul 25 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 #Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 #Python
python读取与写入csv格式文件的示例代码
Dec 16 #Python
浅谈用VSCode写python的正确姿势
Dec 16 #Python
numpy中索引和切片详解
Dec 15 #Python
Python实现简单网页图片抓取完整代码实例
Dec 15 #Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 #Python
You might like
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
php 发送带附件邮件示例
2014/01/23 PHP
PHP获取文件行数的方法
2015/06/10 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
js中onload与onunload的使用示例
2013/08/25 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
Python中unittest用法实例
2014/09/25 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
合作意向协议书范本
2014/03/31 职场文书
产品开发计划书
2014/04/27 职场文书
计生专干事迹
2014/05/28 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle