十五:jinja2过滤器之实现自定义过滤器
2024-09-02 16:51:44
过滤器的本质就是函数,如果在模板中调用这个过滤器,那么就会将这个变量的值作为第一个参数传给过滤器函数,然后将函数的返回值作为滤器的返回值
1、在python文件中写好过滤的函数和逻辑
2、将将函数注册到模板过滤器中:@app.template_filter('过滤器名')
3、在模板中调用过滤器:变量|过滤器名
实现一个把‘hello’替换成''的过滤器
也可以改为模板里面自己设置要替换的内容
实现时间处理过滤器
返回time距离现在的时间是多久
1、如果时间间隔小于1分钟,就显示“刚刚”
2、如果时间间隔大于等于1分钟小于1小时,就显示“xx分钟前”
3、如果时间间隔大于等于1小时小于24小时,就显示“xx小时前”
4、如果时间间隔大于等于24小时小于30天,就显示“xx天前”
5、否则就显示具体的时间
@app.route('/')
def index():
data = {'time': datetime(2019, 11, 2, 16, 0, 0)}
return render_template('index.html', **data) @app.template_filter('time_handle')
def time_handle(time):
""" 返回time距离现在的时间是多久 """
if isinstance(time, datetime):
timestamp = (datetime.now() - time).total_seconds()
if timestamp < 60:
return '刚刚'
elif timestamp >= 60 and timestamp < 60 * 60:
return f'{int(timestamp / 60)}分钟前'
elif timestamp >= 60 * 60 and timestamp < 60 * 60 * 24:
return f'{int(timestamp / (60 * 60))}小时前'
elif timestamp >= 60 * 60 * 24 and timestamp < 60 * 60 * 24 * 30:
return f'{int(timestamp / (60 * 60 * 24))}天前'
else:
return time.strftime('%Y-%m-%d %H:%M')
else:
return time
最新文章
- Mysql存储过程和函数区别介绍
- 图片延迟加载jquery插件imgLazyLoading
- Android开发权威指南(第2版)新书发布
- 谏牲口TT十思疏
- Selenium中expected_conditions下text_to_be_present_in_element_value方法的使用
- Javascript原型链
- memcached完全剖析--1
- 解决 子进程已安装的 post-removal脚本返回了错误号 100 的方法
- java-Mysql-SQLServer数据类型匹配速查表
- XP 右键扩展设置 1.0 免费绿色版
- EL探索
- 最小截断[AHOI2009]
- myecplise自带的tomcat问题
- java数据结构与算法之栈(Stack)设计与实现
- HAWQ配置之客户端访问
- JSON序列——主从表查询
- oracle基础——内存管理、优化
- 【vue】项目编译报错‘npm ERR! **@**dev: `webpack-dev-server --inline --progress --config ’’
- javaBean分析
- C语言函数参数传递