自定义标签过滤器

Posted xuqidong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义标签过滤器相关的知识,希望对你有一定的参考价值。

 1 2 模版之过滤器
 2         -语法:{{第一个参数|过滤器名字:第二个参数}}
 3         -常用过滤器:(详细用法见源码)
 4             -length
 5             -default
 6             -slice
 7             -date
 8             -filesizeformat
 9             -truncatechars
10             -truncatewords
11             -safe
12             -add
13     3 模版之标签
14         -{% 标签 %}
15         -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话,    自己打印一下
16             empty:被循环的对象是空,才走它
17             for循环可以嵌套,也可以用if
18         -if:
19             {% if forloop.first %}
20                 <p>第一次的我 </p>
21             {% elif forloop.last %}
22                 <p>最后的我 </p>
23             {% else %}
24                 <p>{{ foo }}</p>25             {% endif %}
26         -with:重命名,应用在变量名过长
27         ********都要有结束********
28         
29     4 自定义标签和过滤器
30         --***标签不能用在if判断,过滤器,可以用在if判断
31         -自定义过滤器
32             -1 先app是不是已经在setting中注册
33             -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
34             -3 在模块下创建一个py文件,名字随意:mytag.py
35             -4 # 第一步,导入template
36                from django.template import Library
37                # 第二步,定义一个叫register的变量=template.Library()
38                register = Library()
39             -5 写一个函数,用@register.filter(name=yyy)装饰一下(可以指定别名)
40                 def str_add(str1, str2): #一定要有返回值
41                     # 业务逻辑很复杂
42                     return str1 + str2
43             -6 在模板里:(新定定义的标签,过滤器,都要重启程序)
44                 -{% load mytag %}
45                 -{{lqz|str_add:nb}}
46         -自定义标签:
47             -1-4:前4步,根过滤器的定义完全一样
48             -5 只是装饰器不一样
49             @register.simple_tag()
50                 def add_nb(value):
51                     return value+nb
52             -6 在模板里:(多个参数,以空格区分)
53                 -{% load mytag %}
54                 -{% add_nb ‘xqd%}
55

补充:inclusion_tag
-先注册app
-在app下创建一个templatetags的模块
-在模块下新建一个py文件
-from django.template import Library
-register=Library()------>名字必须叫register
-使用装饰器:@register.inclusion_tag(‘test.html‘)
-写个函数my_inclusion,返回字典
-模板里就能取到字典,渲染模板
-使用:
在模板中:{%load py文件名%}
{% my_inclusion 参数%}

以上是关于自定义标签过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Sublime Text3自定义代码片段

django 第五课自定义模板过滤器与标签

Django—— 模板层:变量过滤器标签自定义标签和过滤器

编写 Boto3 过滤器以使用自定义标签名称的正确方法是啥?

为片段制作自定义列表视图?

Django(自定义过滤器和自定义标签)