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运用于数据分析的简单教程
Mar 27 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
利用python写个下载teahour音频的小脚本
May 08 Python
Python实现自动发送邮件功能
Mar 02 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
python日期与时间戳的各种转换示例
Feb 12 Python
jupyter note 实现将数据保存为word
Apr 14 Python
jupyter notebook更换皮肤主题的实现
Jan 07 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
一个MYSQL操作类
2006/11/16 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
JS正则表达式验证数字代码
2014/01/28 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
Python探索之自定义实现线程池
2017/10/27 Python
python实现彩票系统
2020/06/28 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
python中re模块知识点总结
2021/01/17 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
2015员工年度考核评语
2015/03/25 职场文书
Python3接口性能测试实例代码
2021/06/20 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL