在我们的日常的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当中安装过滤器文件
- 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