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字典序问题实例
Sep 26 Python
Python中的hypot()方法使用简介
May 18 Python
python版简单工厂模式
Oct 16 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
浅谈python中requests模块导入的问题
May 18 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python性能分析工具Profile使用实例
Nov 19 Python
Pytorch之view及view_as使用详解
Dec 31 Python
Python中包的用法及安装
Feb 11 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
python属于软件吗
Jun 18 Python
教你利用python实现企业微信发送消息
May 23 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中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP数据类型的总结分析
2013/06/13 PHP
PHP中session变量的销毁
2014/02/27 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
一个JS翻页效果
2007/07/23 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
浅析JavaScript动画
2015/06/10 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python继承和抽象类的实现方法
2015/01/14 Python
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python实现证件照换底功能
2019/08/20 Python
Python读取YAML文件过程详解
2019/12/30 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
购房协议书范本
2014/10/02 职场文书
车辆委托书范本
2014/10/05 职场文书
MySQL约束超详解
2021/09/04 MySQL
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
openstack云计算keystone组件工作介绍
2022/04/20 Servers