博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django标签之包含标签Inclusion tags
阅读量:5138 次
发布时间:2019-06-13

本文共 1398 字,大约阅读时间需要 4 分钟。

Django过滤器和标签功能很强大,而且支持自定义标签,很是方便;其中一种标签是Inclusion tags,即包含标签,个人感觉比较反人类的

包含标签(Inclusion tags)通过渲染其他的模板来展示内容,这类标签的用途在于一些相似的内容的展示,并且返回的内容是渲染其他模板得到的内容。

这里我将举个小小栗子

我们自定义一个包含标签,这个标签将输出一个列表,我们可以这样使用这个标签

{% task_l %}

输出大概是这样的

下面我们一步一步来完成

首先定义一个函数,这个函数返回所有任务列表

def task_l():    task = TaskList.objects.all()    return {'task':task}

然后我们创建一个要被渲染的模板用于输出

$ cat templates/t.html

最后使用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 templatefrom tasklist.models import TaskListregister = 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 %}

Inclusion Tags

{% task_l %}
Done.

需要注意的是,t.html为渲染标签内容的模板,inclusion.html是显示内容的目标模板

最后我们再配置一下url路由

$ cat urls.py

url(r'^inclusion/$', tl_views.inclusion),

之后打开浏览器即可看到效果

转载于:https://www.cnblogs.com/robinunix/p/7864850.html

你可能感兴趣的文章
PCB板的线宽、覆铜厚度与通过的电流对应的关系
查看>>
linux4.1.36 解决 SPI 时钟找不到 不生成设备 device
查看>>
ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别(转)
查看>>
Mysql Insert Or Update语法例子
查看>>
python+Eclipse+pydev环境搭建
查看>>
1.8
查看>>
Android各个文件夹对应的分辨率?
查看>>
CentOS 7 安装与卸载MySQL
查看>>
bzoj 4545: DQS的trie
查看>>
IO流的读写
查看>>
Java 如何抛出异常、自定义异常
查看>>
c语言实现n!算法
查看>>
中文文本分类之TextRNN
查看>>
HUAS 1483 mex(莫队算法)
查看>>
asp邮件发送
查看>>
Android ListView下拉刷新 Demo
查看>>
Python-装饰器(Decorator)
查看>>
SAP虚拟机的使用方法
查看>>
剑指offer(41-45)编程题
查看>>
Linux套接字和I/O模型
查看>>