Django标签之包含标签Inclusion tags
Django过滤器和标签功能很强大,而且支持自定义标签,很是方便;其中一种标签是Inclusion tags,即包含标签,个人感觉比较反人类的
包含标签(Inclusion tags)通过渲染其他的模板来展示内容,这类标签的用途在于一些相似的内容的展示,并且返回的内容是渲染其他模板得到的内容。
这里我将举个小小栗子
我们自定义一个包含标签,这个标签将输出一个列表,我们可以这样使用这个标签
{% task_l %}
输出大概是这样的

下面我们一步一步来完成
首先定义一个函数,这个函数返回所有任务列表
def task_l():
task = TaskList.objects.all()
return {'task':task}
然后我们创建一个要被渲染的模板用于输出
$ cat templates/t.html
<select>
{% for t in task %}
<option value ="">{{ t }}</option>
{% endfor %}
</select>
最后使用inclusion_tag函数注册
register.inclusion_tag('t.html')(task_l)
这里写法不要错了,如果写成
...
register.inclusion_tag('t.html', task_l)
就会报如下错误
TemplateSyntaxError at /inclusion/
Invalid block tag on line 3: 'task_l'.Did you forget to register or load this tag?

当然还可以通过装饰符
@register.inclusion_tag('t.html')
def task_l:
...
还有,别忘了加上
register = template.Library()
完整的tag如下:
$ cat templatetags/mytet.py
from django import template
from tasklist.models import TaskList register = template.Library() def task_l():
task = TaskList.objects.all()
return {'task':task} register.inclusion_tag('t.html')(task_l)
最后我们构造一个函数用于展示我们的内容
$ cat views.py
def inclusion(request):
return render(request, 'inclusion.html', {})
inclusion.html的内容为
$ cat templates/inclusion.html
{% load mytet %}
<p>Inclusion Tags</p>
{% task_l %}
<br />
Done.
需要注意的是,t.html为渲染标签内容的模板,inclusion.html是显示内容的目标模板
最后我们再配置一下url路由
$ cat urls.py
url(r'^inclusion/$', tl_views.inclusion),
之后打开浏览器即可看到效果
Django标签之包含标签Inclusion tags的更多相关文章
- 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)
自定义标签同自定义过渡器一样,要创建文件,在配置文件中以APP方法注册,对方法进注册,在 html 文件中引入,.. 由模板传参 在 在配置文件中改时区: 由视图函数传参 包含标签: 当有这种重复的代 ...
- python的Web框架,Django自定义过滤器及标签
代码布局 有的时候框架给的过滤器不够用,需要自定义一些过滤器,所以就需要我们自己来定义一些过滤器等 自定义代码放置的路径 某个app特用(独有)的 - app 目录下的 templatetags文件夹 ...
- Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django模板语言,标签整理
Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...
- 第三章:模版层 - 2:Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django自定义过滤器及标签
一.自定义过滤器 1.自定义过滤器文件存放位置 在APP应用下创建名为templatetags(该文件夹名固定)的文件包(包含__init__.py文件) 注意APP必须在setting中注册 即在s ...
- 定义一个包含标签inclusion_tag, 调用模板时报错.. 应该是路径 不对吧...我的templates 是放在app 目录下的.<待处理>
# 自定义模板标签. 标签的作用,在模板中 实现逻辑,如if ,for 等 from django.template import Library from datetime import datet ...
- python3之Django内置模板标签和过滤器
一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...
- django 自定模板标签的注册
首先注册方法一般都是先实例化一个template.Library.如: from django import template register = template.Library() 1.注册自定 ...
随机推荐
- c#和Java中的接口
使用场景: 在c#和Java中: 1.接口可以实现“多继承”(多实现),一个类只能继承自一个父类,但是可以实现多个接口. 2.接口解决了不同类型之间的多态问题,比如鱼与船不是同一类型,但是都能在水里“ ...
- ValidForm验证表单
在做项目时,要求熟悉项目中验证表单的插件,所以学习一下validForm这个插件 http://validform.rjboy.cn/document.html#validformObject
- Spring IoC与DI(依赖注入)
Spring Ioc 所谓控制反转,即将传统的需要代码进行的操作,交由Spring容器来做.下面以添加book为例进行比较一下: BookService.java public interface B ...
- Eclipse+Tomcat搭建jsp服务器
首先,安装java sdk 环境,这里就不多说了,附上java sdk的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk ...
- label自适应文本大小
UILabel *label = [[UILabelalloc] initWithFrame:CGRectZero]; NSString *string = @"aa2fkoksdajfis ...
- FMDB中的数据处理
[self.db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)" ...
- day12-迭代器
迭代器的概念 内部含有_next_和_iter_方法的就是迭代器. 可以被for循环的都是可迭代的,只有是可迭代对象,才能用for循环. 可迭代的内部都有_iter_方法——可迭代协议. 只要是迭代器 ...
- 探讨2018年最受欢迎的15顶级Python库!
近日,数据科学网站 KDnuggets 评选出了顶级 Python 库 Top15,领域横跨数据科学.数据可视化.深度学习和机器学习.如果本文有哪些遗漏,你可以在评论区补充. 图 1:根据 GitHu ...
- UVa - 1593 Unix ls(STL)
给你一堆文件名,排序后按列优先的方式左对齐输出. 假设最长文件名长度是M,那么每一列都要有M+2字符,最后一列有M字符. inmanip真NB..orz #include <iostream&g ...
- 搜索引擎elasticsearch常用指令演示
目录 交互方式 常用操作示例 添加文档 删除文档 修改文档 查询 简单查询 高级多条件查询 交互方式 操作ES有3种方式: kibana控制台(Dev Tools) Http + json api接口 ...