• Django模板的include机制

    Django的文件包含
    服务器君一共花费 11.396 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    写过 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 ,该标签不会引发错误信息,在标签位置不显示任何东西。
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android里的ContentValues 2 个条目
  2. [PHP程序设计] CodeIgniter与PHP框架设计 5 个条目
  3. [数据库技术] SQL基础语法 1 个条目
  4. [Python程序设计] Python Web部署的背景知识 9 个条目
  5. [移动开发] Android根基概念Context 8 个条目
  6. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  7. [Python程序设计] Tornado源码解析 23 个条目
  8. [PHP程序设计] PHP与Stream流 5 个条目
  9. [Python程序设计] Django与表单 4 个条目
  10. [数据结构] 图的定义 1 个条目
  11. [Python程序设计] Django后台管理系统 2 个条目
  12. [移动开发] Android Studio里的Gradle 3 个条目
窗口 -- [八点]