Django--inclusion_tag

一、应用场景介绍

在前端的模板语法中,不论是将后端的函数加上自定义过滤器或自定义标签的装饰器,返回的都只是普通的数据;

而将后端函数加上inclusion_tag装饰器可以将非完整的前端页面返回!


 

二、使用方法

1、在settings.py中的INSTALLED_APPS添加当前app的名字,不然django无法找到自定义的过滤器或标签

2、在文件夹app01中创建子文件夹templatetags(文件夹名只能是templatetags)

3、在templatetags新建任意.py文件,如test_tags.py,文件内容如下

from django import template
register = template.Library() # 注意变量名必须为register,不可改变

括号内传入的参数为 html 页面的名字,装饰的函数可以将函数的返回值传给这个 html 页面

注意:该函数只能返回字典类型的数据,如果是其他类型数据,只能用locals()

# 使用inclusion_tag装饰器
@register.inclusion_tag('test_tag.html',name='my_test')
def index(xxx):
  	list_test = []
  	for i in range(xxx):
    		list_tset.append('第 %s 页'%i)
    return locals()

test_tag.html 需要注意:该文件不能是完整的 html 文件,只能书写一些小组件的 html 代码

<ul>
	{% for i in list_test %}
  		<li>i</li>
  {% end for %}
</ul>

对于普通的字典类型的数据,直接按key获取

# 使用inclusion_tag装饰器
@register.inclusion_tag('test_tag.html', name='my_test')
def index(xxx):
  	return {'one':1, 'two':2}
<p>
  {{ one }}
</p> 
<p>
  {{ two }}
</p>

4、前端的使用

在主要的前端 html 文件中

先加载test_tags.py文件

{% load test_tags %}

再调用

{% my_test 10 %}

三、效果展示

templatetags新建任意.py文件,如test_tags.py,文件内容如下

from django import template
register = template.Library() # 注意变量名必须为register,不可改变

# 使用inclusion_tag装饰器
@register.inclusion_tag('test_tag.html',name='my_test')
def index(xxx):
  	list_test = []
  	for i in range(xxx):
    		list_tset.append('第 %s 页'%i)
    return locals()

test_tag.html

<ul>
	{% for i in list_test %}
  		<li>i</li>
  {% end for %}
</ul>

前端展示结果

<body>
{% load test_tags %}
{% my_test 10 %}
</body>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAVnYuOS-1656063767539)(图片.assets/模板1.png)]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值