在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% 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将会在下面两个处理方法中选择一个: 如果 DEBUG 设置为 True ,你将会在 Django 错误信息页面看到 TemplateDoesNotExist 异常。 如果 DEBUG 设置为 False ,该标签不会引发错误信息,在标签位置不显示任何东西。