Django学习笔记(10)自定义标签及内置filters

自定义标签

  当前端页面显示数据时需要对某些数据进行特殊处理,此时可使用自定义标签

  使用步骤:

  1.在应用文件夹下新建templatetags目录,并且需要定义__init__.py空文件,注意:目录名必须是‘templatetags’

 

 

2.在templatetags文件下创建my_tags.py文件(可自定义文件名)

  my_tags.py中定义方法,@register.filter   最多只能传递两个参数,@register.simple_tag传递的参数个数不限制

  my_tags.py

 1 from django import template
 2 
 3 register = template.Library() #实例化template,实例对象名称必须是register
 4 
 5 # 定义两个方法,处理文章显示过长使用.....来展示
 6 @register.filter    #filter最多两个参数
 7 def abc(s,length=2):
 8     if len(s) >length:
 9         s = s[:length] + '.....'
10     return s
11 
12 @register.simple_tag   #simple_tag不限制参数个数
13 def abc2(s,length=2):
14     if len(s) >length:
15         s = s[:2] + '.....'
16     return s

 

3.将自定义标签应用在templates的HTML文件中

在HTML第一行需要使用{% load my_tags %}引用自定义标签,my_tags 即为定义的文件名

index.html

 1 #伪代码
 2 
 3 {% extends 'base.html' %}
 4 {% load my_tags %}
 5 
 6 {% for article in articles %}
 7                 <li><i><a href="/detail?id={{ article.id }}"><img src="/static/{{ article.img }}"></a></i>
 8                     <h3><a href="/detail?id={{ article.id }}">{{ article.title }}</a></h3>
 9 {#                    filter:abc方法参数1为article.desc(需要处理的字段),第二参数通过格式: 参数1 | 方法名:参数2   #}
10 {#                    <p>{{ article.desc | abc:1}}</p>#}
11 {#                    simple_tag: 格式:{{ % 方法名 参数1 20 30 % }}, 20 30为第2和第3个参数,通过空格间隔 #}
12                   <p>{{% abc2 article.desc 20 30 %}}</p>
13                 </li>
14             {% endfor %}

 

Django内置常用的filters

基本语法:{{ value|filter_name:参数 }} value:变量名 ; filter_name:Django内置或者自定义filter方法; 参数:处理的值

3.1、{{ value|default:参数 }} 如果value没有传值,替换default设置的参数。

3.2、{{ value|default_if_none:参数 }} 如果value为none,替换default设置的参数。

3.2、{{ value|length }} 显示value的长度

3.3、{{ value|filesizeformat }} 将value格式化一个可以识别的大小(例子:1.5k,5M等)

3.4、{{ value|slice:" 2:1" }} 对value进行切片(支持负数)

3.5、{{ value|date:"Y:m:d H:i:s"}} 格式话时间

3.6、{{ value|safe }}  直接解析为可执行的html代码

3.7、{{ value|truncatechars:30 }} 对value进行截取,只显示30个字符,用“...”代替多余的部分

3.8、{{ value|add:10 }} 做加法运算

3.9、{{ value|capfirst }} 首字母大写

3.9、{{ value|cut:'a' }} 从字符串中移除指定的字符

 

posted @ 2020-07-23 10:41  布谷鸟的春天  阅读(216)  评论(0编辑  收藏  举报