Django 模板中 include 标签使用小结
include
标签允许在模板中包含其它的模板的内容。 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %}
来减少重复
1. include 标签的基本用法
假设我们在多个 HTML 模板中都需要用到显示用户自定义的 HTML 片段,显示的方式是一个标题加上需要显示的具体内容。
下面的这个模板文件 html-section.html
就满足了基本的需求,我们可以在不同的 HTML 模板中引入这个子模版。
include
后面可以使用字符串或者变量名来指定模板路径
<div class="section-title">
<span>{{title}}</span>
</div>
<div class="section-content">
<div id="{{section_id}}">{% autoescape off %}{{content | default:''}}{% endautoescape %}</div>
</div>
在各个父模板中就可以使用 include
指令来引入这个子模版。
由于默认情况下子模版可以访问复模版中的变量,子模版可以正常显示指定的 HTML 内容。
{% include 'html-section.html' %}
## 2. include with
如果需要在一个网页多次引入同一个子模版,上面的方式就会出现问题。
因为在子模版中我们指定了变量名称,这个时候我们可以使用 with
关键字给子模版指定变量
{% include 'html-section.html' with title="Summary" content=article_summary section_id="article-summary" %}
{% include 'html-section.html' with title="Article Body" content=article_body section_id="article-body" %}
{% include 'html-section.html' with title="Contact US" content=article_footer section_id="article-contact" %}
### 2.1 使用过滤器修改变量
设想一下这样的场景:一个 HTML 页面中多次引入了一个子模版,其中部分 include
语句需要做一些定制。
比如说在变量后面加入固定的文字。
当然可以通过修改子模版满足任意的定制化需求。但如果仅仅只是变量上的改变, 修改子模版就显得太繁琐。
而 with
关键字可以在不改变子模版的前提下,使用过滤器来修改变量的值
假如我们需要将上面的子模版做以下的修改:
- 使用 content 里面的第一个单词作为标题
- 所有的标题后面添加指定的内容
- 标题的第一个字母要保证大写
在不改变子模版的前提下,我们可以将 include 语句做以下的修改
{% include 'html-section.html' with title=content|truncatewords:1|add:' Section'|capfirst content=article_footer section_id="article-contact" %}
### 2.2 阻止子模版访问除了 `with` 指定的变量
默认情况下子模版可以访问父模板的所有变量,在 Django 中还可以通过使用 only
选项来阻止这个默认行为
{% include "html-section.html" with title="Summary" content=article_summary section_id="article-summary" only %}
## 3. with 标签
另外 Django 还提供了单独的 with
标签来修改或者指定变量的值。
可以单独使用,也可以搭配 include
标签使用。使用方法如下:
<!-- 使用 with 标签指定变量 -->
{% with title="summary" content=article_body|capfirst section_id="article-body" %}
{% include 'html-section.html' %}
{% endwith %}
<!-- 使用 with as -->
{% with content|truncatewords:1|capfirst as title %}
{% include 'html-section.html'%}
{% endwith %}
转载请注明出处: [zf-l](http://www.cnblogs.com/zf-l/p/django-include.html)
Django 模板中 include 标签使用小结的更多相关文章
- 测试开发之Django——No6.Django模板中的标签语言
模板中的标签语言 1.if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即:变量存在,非空,不是布尔值假),系统会显示在{% if %} 和 {% endi ...
- Django模板中include的标签的使用
在很多网站中,基本上的都会有一个开头和一个结尾,在每一个网页中都会显示.相对于这种的来说,在Django中,最好的方法就是使用include的标签,在每一个模板中都加入这个开头和结尾的标签. 官方文档 ...
- django学习-7.html模板中include标签使用场景
1.前言 假设一个公司A有一个网站B,且网站B有5个不同的页面分别为C1,C2,C3,C4,C5. 那么,我们在打开这5个不同页面后去查看页面的整体内容,会发现每个页面的顶部内容.底部内容都一模一样. ...
- django模板中的extends和include使用方法
一.extends使用方法 首先extends也就是继承,子类继承父类的一些特性.在django模板中通过继承可以减少重复代码. 首先我们建立一个app,名字叫做hello.别忘了在settings. ...
- 在 Django 模板中遍历复杂数据结构的关键是句点字符
在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . ). 实例二 mysit/templates/myhtml2.html修改如下 <!DOCTYPE html> <h ...
- django模板--条件控制标签
条件控制标签 在django模板中可以通过条件控制标签进行逻辑控制,条件控制标签的语法如下: {% if condition1 %} ... {% elif condition2 %} ... {% ...
- django 模板中定义临时列表
<ul class="num_t clr"> {% for obj in ""|ljust:"10" %} <li> ...
- Django 模板中引用静态资源(js,css等)
Django 模板中免不了要用到一些js和CSS文件,查了很多网页,被弄得略晕乎,还是官网靠谱,给个链接大家可以自己看英文的. https://docs.djangoproject.com/en/1. ...
- android中include标签使用详解
android中include标签是为了便于控件的覆用的一个很好解决方案. 但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看. include标签用法. ...
随机推荐
- asp.net core权限模块的快速构建
大部分系统都会有权限模块,别人家系统的权限怎么生成的我不知道,我只知道这样做是可以并且挺好的. 文章中只对asp.net core的部分代码进行说明 呃 记录~,mvc版本自行前往仓库查阅 代码中的一 ...
- Ubuntu16.04.1安装JDK1.8.0
今天在安装Zookeeper的时候需要安装JDK,对于.Neter来说还是有点陌生,下面我就把安装JDK的步骤记录一下,分享给大家. 一.下载JDK安装包:http://www.oracle.com/ ...
- 原生JS封装animate运动框架
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Python使用Scrapy爬虫框架全站爬取图片并保存本地(妹子图)
大家可以在Github上clone全部源码. Github:https://github.com/williamzxl/Scrapy_CrawlMeiziTu Scrapy官方文档:http://sc ...
- MongoDB学习教程(3)-常用命令
1.MongoDB 条件操作符 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据. 在本章节中,我们将讨论如何在MongoDB中使用条件操作符. MongoDB中条件操作符有: (& ...
- ch5-Class 与 Style 绑定(v-bind:class v-bind:style)
数据绑定一个常见需求是操作元素的 class 列表和它的内联样式. 因为它们都是属性 ,我们可以用v-bind 处理它们:只需要计算出表达式最终的字符串. 不过,字符串拼接麻烦又易错.因此,在 v-b ...
- 个人工作中ssd、audio python脚本总结
1.os.system(cmd)或者os.popen(cmd)调用外部命令 cmd中需要注意特殊字符的转义功能,如: USBSTOR\DISK&VEN_GENERIC-&PROD_SD ...
- springboot mybatis优雅的添加多数据源
springboot的原则是简化配置,本文试图不通过xml配置,使用configuration配置数据源,并进行简单的数据访问. 并且配置了多数据源,在开发过程中这种场景很容易遇到. 1.依赖 spr ...
- 深刻理解反射(Reflection)
最近公司在搞自动化测试,由于版权问题,无法用 '录制脚本' 进行,也就没法用 VS 自带的 UITest 框架(蛋疼), 所以只能开源的 FlaUI 框架来搞了.其中不可避免的涉及到反射的应用,但自己 ...
- mySQL使用实践
1.虚拟机安装mySQL 服务器, 宿主机分别使用navicat工具和java代码 访问mySQL,组网图如下: 2. 查看mySQL的服务器状态,如下: 3. 服务器上查看数据库和数据表内容如下: ...