比如,现在通过数据采集,得到了全国3亿人的生日,然后要在前端进行展示,但是,由于数据来源多处,导致生日的格式各种各样,比如 1983-02-03 ,2016年4月16日,这个时候如果数据采集过程当中没有进行数据过滤,就需要有一种功能针对每一条数据的日期进行修改。这时候就需要用到过滤器了。
在APP当中创建templatetags包(名字固定),然后在里面创建过滤器文件。
在templatetags当中的文件里面编写过滤器
在settings INSTALL_APP当中安装过滤器文件
在前端使用过滤器
setTimetages和python文件名对应,setTime和过滤器python文件下的@register.filter(name="setTime")中的名字对应。
接收参数,按照年龄返回对应的年龄段。
setTimetages.py文件内容如下:
import re from django import template #引入django的template register = template.Library() #调用template下的方法 @register.filter(name="setTime") #给自定义过滤器起的名字,前端使用过滤器的名字为setTime def set_time(value): #编写方法 """ :param value: 接收前台传过来的参数,就是setTime之前的数据 :return: """ res = re.findall(r"(\d{2,4}).*?(\d{1,2}).*?(\d{1,2})",value) result = 2019 - int(res[0][0]) lst = [[12,"少年"],[22,"青年"],[35,"壮年"],[45,"中年"],[60,"老年"],[100,"太古"]] for data in lst: if result<data[0]: status = data[1] break # if result <=12: # status = "少年" # elif result<=22: # status = "青年" # elif result <=35: # status = "壮年" # elif result<=45: # status = "中年" # elif result<=60: # status = "老年" # else: # status = "太古" return status前端主要内容如下:
<body> {% load setTimetages %} {% for one in threeyi %} <p>{{ one.name }}  {{ one.birthday }}</p> <p>{{ one.name }}  {{ one.birthday|setTime }}</p> {% endfor %} {% addNum "1" %} </body>结果如下;