• 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' }} 从字符串中移除指定的字符
  • 相关阅读:
    Java中的24种设计模式与7大原则
    Red Hat Enterprise Linux 6安装步骤
    jquery之获取当前时间和月份加1
    新手看过来:随车千斤顶怎么用?
    空挡滑行和带挡滑行究竟谁省油 误区要知道
    怎么开手动档轿车?这么开让你再也不想开自动档
    FindBugs插件的安装与使用
    图解Eclipse中安装和使用FindBugs
    新手开车上高速 不懂这些安全细节非常危险
    酒桌游戏
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13364955.html
Copyright © 2020-2023  润新知