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虚拟环境Virtualenv使用教程
May 18 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python实现视频分帧效果
May 31 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
django如何自己创建一个中间件
Jul 24 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 Python
解析python实现Lasso回归
Sep 11 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
通过实例简单了解python yield使用方法
Aug 06 Python
PyTorch 如何自动计算梯度
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制作静态网站的模板框架(二)
2006/10/09 PHP
php smarty函数扩展
2010/03/15 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
js 调整select 位置的函数
2008/02/21 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
jQuery 选择器理解
2010/03/16 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
没编程基础可以学python吗
2020/06/17 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
新法人代表任命书
2014/06/06 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
MySQL之DML语言
2021/04/05 MySQL
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏