Django学习笔记(10)自定义标签

自定义标签

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

  使用步骤:

  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 %}

猜你喜欢

转载自www.cnblogs.com/bugoobird/p/13364955.html
今日推荐