zoukankan      html  css  js  c++  java
  • 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' }} 从字符串中移除指定的字符
  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13364955.html
Copyright © 2011-2022 走看看