[Django模板系统]Django模板的include机制
2015-10-20 23:37
711 查看
注:以下内容转载自 现代魔法学院 网站的 Django模板的include机制 一文,仅供学习使用。
写过 Web 程序的都对 include 包含文件很熟悉,那么在 Django,include 又是怎么一个机制呢?
include模板标签
在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% include %} 。该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复。
下面这两个例子都包含了 nav.html 模板。这两个例子是等价的,它们证明单/双引号都是允许的。
下面的例子包含了 includes/nav.html 模板的内容:
下面的例子包含了以变量 template_name 的值为名称的模板内容:
也就是说,加载的模板名还可以在 view 层中定义。
和在 get_template() 中一样,对模板的文件名进行判断时会在所调取的模板名称之前加上来自 TEMPLATE_DIRS 的模板目录。
所包含的模板执行时的 context 和包含它们的模板是一样的。举例说,考虑下面两个模板文件:
如果你用一个包含 current_section 的上下文去渲染 mypage.html 这个模板文件,这个变量将存在于它所包含(include)的模板里,就像你想象的那样。
如果{% include %}标签指定的模板没找到,Django将会在下面两个处理方法中选择一个:
如果 DEBUG 设置为 True,你将会在 Django 错误信息页面看到 TemplateDoesNotExist 异常。
如果 DEBUG 设置为 False,该标签不会引发错误信息,在标签位置不显示任何东西。
写过 Web 程序的都对 include 包含文件很熟悉,那么在 Django,include 又是怎么一个机制呢?
include模板标签
在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% include %} 。该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复。
下面这两个例子都包含了 nav.html 模板。这两个例子是等价的,它们证明单/双引号都是允许的。
{% include 'nav.html' %} {% include "nav.html" %}
下面的例子包含了 includes/nav.html 模板的内容:
{% include 'includes/nav.html' %}
下面的例子包含了以变量 template_name 的值为名称的模板内容:
{% include template_name %}
也就是说,加载的模板名还可以在 view 层中定义。
和在 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将会在下面两个处理方法中选择一个:
如果 DEBUG 设置为 True,你将会在 Django 错误信息页面看到 TemplateDoesNotExist 异常。
如果 DEBUG 设置为 False,该标签不会引发错误信息,在标签位置不显示任何东西。
相关文章推荐
- [Django模板系统]用locals()传递变量到模板
- Django官方文档Model层之数据操作(主要是查询)
- 好吧,如果一定要RESTFUL的DJANGO
- Django MiddleWare
- Django Manager
- Django 入门Demo
- 南阳热省赛A——找规律——Googol String
- LSGO软件技术团队2015~2016学年第七周(1012~1018)总结
- Google-Gson使用
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest F - Infinite Go
- HDOJ 1847 Good Luck in CET-4 Everybody!(巴什博弈)
- CoinAlgorithm
- django之todolist(二)
- Goal: Godlike Lisp hk
- 漫谈 HMM之二:Forward-Backward Algorithm
- golang 数组 slice 乱序
- [Django1.8] Authentication
- Algorithms—131.Palindrome Partitioning
- [Django1.8]sessions
- Algorithms—140.Word Break II