python的flask自定义过滤器
今天在做flask后台开发中,遇到时间处理的问题:信息列表中需要调用时间,数据库中都是存放的时间戳,需要做时间格式化。
如果一个列表循环一次做时间格式化更新这个办法不可行,浪费!
只能在jinja模板里面做时间处理,这里用到jinja的注册过滤器
jinja的内置过滤器清单,这里就不一一列举出来了, 可以翻一下jinja的手册里面都有。
jinja的自定义注册过滤器有两种方法分别是(代码来自官方手册):
第一种: template_filter() 装饰器
@app.template_filter('reverse')
def reverse_filter(s):
return s[::-1]
第二种: jinja_env
def reverse_filter(s):
return s[::-1]
app.jinja_env.filters['reverse'] = reverse_filter
使用方法:
{% for x in mylist | reverse %}
{% endfor %}
以下是自己写的自定义过滤器,使用第一种方法,简单直观:
# 时间自定义过滤器
@app.template_filter()
def formatdata(v1,v2="%Y-%m-%d %H-%M:%S"):
a = time.localtime(v1)
return str(v1)+str(v2) #这里输出自定义过滤器两个参数结构
# return time.strftime(v2,a) #这里输出格式化的时间日期
html模板:
①直接使用默认的时间格式
{{ x['addtime']|formatdata }}
②自定义一个时间格式
{{ x['addtime']|formatdata("%Y-%m-%d") }}
看运行结果:
第一张是正常运行的结果图:
第二张是输出参数构造的图:
第三张是修改自定义的时间格式的图:
从以上可以知道,自定义过滤器的参数结构是怎么样的?
例如在过滤器 {{ 42|myfilter(23) }} 中,函数被以 myfilter(42, 23) 调用
TAGS:python , flask , template_filter , jinja_env , 全栈开发
来自Davids zhou博客原创文章请尊重作者:http://www.zongk.com/zongk/105.html转载请标注此链接
Davids zhou | 站点地图 | | | 皖ICP备14017762号 如有侵犯您权利点击上面QQ -Powered By 帝国CMS -davids.zhou#qq.com(#换@)
Davidszhou个人博客主要记录在网站建设、SEO优化、python开发、PHP开发中遇到问题记录保存,作为他人参考学习教程