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读文件逐行处理的示例代码分享
Dec 27 Python
Python with用法实例
Apr 14 Python
python字典排序实例详解
May 20 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 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
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
《藏戏》教学反思
2014/02/11 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
干部考核工作总结
2015/08/12 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers