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 相关文章推荐
linux下python抓屏实现方法
May 22 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
python opencv实现运动检测
Jul 10 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
详解python深浅拷贝区别
Jun 24 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
Java文件与类动手动脑实例详解
Nov 10 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
培养自己的php编码规范
2015/09/28 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
一篇不错的Python入门教程
2007/02/08 Python
深入理解Python中装饰器的用法
2016/06/28 Python
浅谈Python 对象内存占用
2016/07/15 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
django创建超级用户过程解析
2019/09/18 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
大学生毕业自荐信
2013/10/10 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书