Django自定义模板过滤器

it2022-05-05  168

使用过滤器标签场景示例

比如,现在通过数据采集,得到了全国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>

结果如下;

 


最新回复(0)