• Django模板的include机制

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

    写过 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根基概念Context 8 个条目
  2. [Python程序设计] Tornado表单处理 3 个条目
  3. [移动开发] Android View注入框架Butter Knife 3 个条目
  4. [移动开发] 从代码角度去认识 Thread 9 个条目
  5. [PHP程序设计] PHP扩展模块安装 1 个条目
  6. [数据库技术] SQL基础语法 1 个条目
  7. [智力开发与知识管理] 整体性学习步骤 9 个条目
  8. [计算机算法] TAOCP与算法 12 个条目
  9. [Linux操作系统] 基本 Linux Shell 命令 2 个条目
  10. [Python程序设计] Python Web部署的背景知识 9 个条目
  11. [PHP程序设计] htaccess 设置技巧 6 个条目
  12. [软件工程与项目管理] 浏览器的CSS解析 7 个条目
窗口 -- [协会]