自定义过滤器和自定义标签

在我们的日常的django开发过程当中,难免遇到数据处理的问题,比如,现在通过数据采集,得到了全国3亿人的生日,然后要在前端进行展示,但是,由于数据来源多处,导致生日的格式各种各样,比如 1983-02-03 ,2016年4月16日,这个时候如果数据采集过程当中没有进行数据过滤,就需要有一种功能针对每一条数据的日期进行修改。
views.py

def threeyiData(request):
    threeyi = [
        {"name": "张三", "birthday": "1983-04-45"},
        {"name": "李四", "birthday": "1996年02月68日"},
        {"name": "王五", "birthday": "1983/02/31"},
        {"name": "马六", "birthday": "1983.02.03"},
    ]
    return render(request,"loginapp/tyd.html",locals())

1、在APP当中创建templatetags包,然后在里面创建过滤器文件。
在这里插入图片描述

import  re
from  django import  template
register=template.Library()
@register.filter(name="setTime")
def set_time(value):
    """
    过滤器函数,
    value接收的是过滤器前面的值{{a|setTime}}
    value就是a
    :param value:
    :return:
    """
    res=re.findall(r"(\d{2,4}).*?(\d{1,2}).*?(\d{1,2})",value)
    result="%s年%s月%s日"%res[0]
    return  result

3、在settings INSTALL_APP当中安装过滤器文件

  1. List item

在这里插入图片描述
4、在前端使用过滤器
在这里插入图片描述

{% extens  "base.html" %}
{% load  setTime %}
{% block content %}
    {% for three in  threeyi  %}
        <p  style="color:green">{{ three.name }}:{{ three.birthday|setTime|replaceSting:"0,o"}}</p>
    {% endfor %}

{% endblock %}

过滤器加参数

@register.filter(name="replaceSting")
def set_time(value,args):
    """
    过滤器函数,
    value接收的是过滤器前面的值{{a|setTime}}
    value就是a
    """
    args1,args2=args.split(",")
    result=value.replace(args1,args2)
    return result
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值