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的更多相关文章

  1. 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)

    自定义标签同自定义过渡器一样,要创建文件,在配置文件中以APP方法注册,对方法进注册,在 html 文件中引入,.. 由模板传参 在 在配置文件中改时区: 由视图函数传参 包含标签: 当有这种重复的代 ...

  2. python的Web框架,Django自定义过滤器及标签

    代码布局 有的时候框架给的过滤器不够用,需要自定义一些过滤器,所以就需要我们自己来定义一些过滤器等 自定义代码放置的路径 某个app特用(独有)的 - app 目录下的 templatetags文件夹 ...

  3. Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  4. Django模板语言,标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  5. 第三章:模版层 - 2:Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  6. Django自定义过滤器及标签

    一.自定义过滤器 1.自定义过滤器文件存放位置 在APP应用下创建名为templatetags(该文件夹名固定)的文件包(包含__init__.py文件) 注意APP必须在setting中注册 即在s ...

  7. 定义一个包含标签inclusion_tag, 调用模板时报错.. 应该是路径 不对吧...我的templates 是放在app 目录下的.<待处理>

    # 自定义模板标签. 标签的作用,在模板中 实现逻辑,如if ,for 等 from django.template import Library from datetime import datet ...

  8. python3之Django内置模板标签和过滤器

    一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...

  9. django 自定模板标签的注册

    首先注册方法一般都是先实例化一个template.Library.如: from django import template register = template.Library() 1.注册自定 ...

随机推荐

  1. linux文件或文件夹常见操作

    创建文件夹 mkdir [-p] DirName  在工作目录下,建立一个名为 A 新的子目录 : mkdir A  在工作目录下的 B目录中,建立一个名为 T 的子目录:    若 B 目录不存在, ...

  2. Where art thou-freecodecamp算法题目

    Where art thou 1.要求 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组. 如果返回的数组中包含 source ...

  3. 学习笔记(三): Generalization/Overfitting/Validation

      目录 Generalization: Peril of Overfitting Low loss, but still a bad model? How Do We Know If Our Mod ...

  4. http 基础与通讯原理

    目录 http 基础与通讯原理 Internet 与中国 1990年10月 注册CN顶级域名 1993年3月2日 接入第一根专线 1994年4月20日 实现与互联网的全功能连接 1994年5月21日 ...

  5. linux 上安装配置l2tp的客户端

    有些时候我们外网linux服务器需要访问内网的服务器,这时候就需要在外网服务器上配置l2tp的客户端,连接到VPN访问内网服务器. 安装: yum -y install xl2tpd ppp 安装成功 ...

  6. PHP安装Xcache扩展

    简述 XCache 是一个又快又稳定的 ​PHP opcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在 linux 上)测试并支持所有现行 ​PHP 分支的最新发布 ...

  7. robotframework的列表与字典

    这里以Get Element Size为例,Selenium2Library返回的是列表,AppiumLibrary返回的是字典. 列表用 ${width}获取:字典用 &{ui}[width ...

  8. python3.6:DLL load failed:找不到指定的模块(from PyQt5 import QtCore)

    本人小白搭建pyqt环境时遇到问题 运行代码 from PyQt5 import QtCore' 发现错误 ImportError: DLL load failed: 找不到指定的模块 这个问题折磨了 ...

  9. python模块之sys

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxi ...

  10. cf 1020 C

    C. Elections time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...