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中reduce()函数的使用方法示例
Sep 29 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
python binascii 进制转换实例
Jun 12 Python
Python文件路径名的操作方法
Oct 30 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python使用建议与技巧分享(一)
Aug 17 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python 解决函数返回return的问题
Dec 05 Python
python如何用matplotlib创建三维图表
Jan 26 Python
python中time包实例详解
Feb 02 Python
python requests模块的使用示例
Apr 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
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
关于js类的定义
2011/06/28 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
python中web框架的自定义创建
2019/09/08 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
Python 发送邮件方法总结
2020/08/10 Python
python集合的新增元素方法整理
2020/12/07 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
司机的工作范围及职责
2013/11/13 职场文书
大学同学聚会邀请函
2014/01/19 职场文书
十佳护士先进事迹
2014/05/08 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
客户付款通知书
2015/04/23 职场文书
创业计划书之面包店
2019/09/12 职场文书