Django中模版的子目录与include标签的使用方法


Posted in Python onJuly 16, 2015

get_template()中使用子目录

把所有的模板都存放在一个目录下可能会让事情变得难以掌控。 你可能会考虑把模板存放在你模板目录的子目录中,这非常好。 事实上,我们推荐这样做;一些Django的高级特性(例如将在第十一章讲到的通用视图系统)的缺省约定就是期望使用这种模板布局。

把模板存放于模板目录的子目录中是件很轻松的事情。 只需在调用 get_template() 时,把子目录名和一条斜杠添加到模板名称之前,如:

t = get_template('dateapp/current_datetime.html')

由于 render_to_response() 只是对 get_template() 的简单封装, 你可以对 render_to_response() 的第一个参数做相同处理。

return render_to_response('dateapp/current_datetime.html', {'current_date': now})

对子目录树的深度没有限制,你想要多少层都可以。 只要你喜欢,用多少层的子目录都无所谓。

注意

Windows用户必须使用斜杠而不是反斜杠。 get_template() 假定的是 Unix 风格的文件名符号约定。

include 模板标签

在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% include %} 。该标签允许在(模板中)包含其它的模板的内容。 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复。

下面这两个例子都包含了 nav.html 模板。这两个例子是等价的,它们证明单/双引号都是允许的。

{% include 'nav.html' %}
{% include "nav.html" %}

下面的例子包含了 includes/nav.html 模板的内容:

{% include 'includes/nav.html' %}

下面的例子包含了以变量 template_name 的值为名称的模板内容:

{% include template_name %}

和在 get_template() 中一样, 对模板的文件名进行判断时会在所调取的模板名称之前加上来自 TEMPLATE_DIRS 的模板目录。

所包含的模板执行时的 context 和包含它们的模板是一样的。 举例说,考虑下面两个模板文件:

# mypage.html

<html>
<body>
{% include "includes/nav.html" %}
<h1>{{ title }}</h1>
</body>
</html>

# includes/nav.html

<div id="nav">
  You are in: {{ current_section }}
</div>

如果你用一个包含 current_section的上下文去渲染 mypage.html这个模板文件,这个变量将存在于它所包含(include)的模板里,就像你想象的那样。

如果{% include %}标签指定的模板没找到,Django将会在下面两个处理方法中选择一个:

  1.     如果 DEBUG 设置为 True ,你将会在 Django 错误信息页面看到 TemplateDoesNotExist 异常。
  2.     如果 DEBUG 设置为 False ,该标签不会引发错误信息,在标签位置不显示任何东西。

Python 相关文章推荐
使用python实现baidu hi自动登录的代码
Feb 10 Python
Python中的引用和拷贝浅析
Nov 22 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
单链表反转python实现代码示例
Feb 08 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python实现简单http服务器功能
Sep 17 Python
Python实现的文轩网爬虫完整示例
May 16 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
Django中使用locals()函数的技巧
Jul 16 #Python
Django框架中render_to_response()函数的使用方法
Jul 16 #Python
在Python的Django框架中加载模版的方法
Jul 16 #Python
Django框架下在视图中使用模版的方法
Jul 16 #Python
详解Django中的过滤器
Jul 16 #Python
在Python的Django框架中为代码添加注释的方法
Jul 16 #Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 #Python
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
使javascript也能包含文件
2006/10/26 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
Python实现动态图解析、合成与倒放
2018/01/18 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python变量类型知识点总结
2019/02/18 Python
Django stark组件使用及原理详解
2019/08/22 Python
python实现快递价格查询系统
2020/03/03 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
美工的岗位职责
2013/11/14 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
会议承办单位欢迎词
2019/07/09 职场文书