Python如何实现自定义计算时间过滤器
这篇文章主要介绍Python如何实现自定义计算时间过滤器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在写自定义的过滤器时,因为django.template.Library.filter()本身可以作为一个装饰器,所以可以使用:
register=django.template.Library() @register.filter代替register.filter("过滤器名","函数名")
如果使用@register.filter进行注册自定义的过滤器,并且没有传递任何参数,那么默认的过滤器名和函数名是相同的,当然,也可以进行修改,只需要在@register.filter("过滤器名"),此时的过滤器名就更改了,就可在DTL模板中使用自定义的过滤器了。
定义时间计算过滤器在显示的时候,时间的显示规则:time距离现在多长时间间隔
如果时间间隔小于1分钟,那么就像是“刚刚”
如果时间间隔大于1分钟小于1小时,那么就显示“xx分钟前”
如果是大于1小时小于24小时,那么就显示“xx小时前”
如果是大于24小时,小于30天,那么就显示“xx天前”'
否则就是显示具体时间
示例代码如下:
自定义过滤器的文件my_fliter.py
@register.filter() deftime_since(value): #首先对传进来的时间进行判断,如果是datetime类型的就可以与当前的时间进行比较, #如果不是datetime类型的,就直接返回value ifnotisinstance(value,datetime): returnvalue #如果可以到达这里,就代表为datetime类型的, #timedelay.total_seconds()属性 now=datetime.now() timestamp=(now-value).total_seconds() iftimestamp<60: return"刚刚" eliftimestamp>=60andtimestamp<60*60: #在python3中如果两数相除,有余数的话,就会保持小数,这个时候我们就可以使用int()函数,进行转换 minutes=int(timestamp/60) return"%s分钟前"%minutes eliftimestamp>=60*60andtimestamp<60*60*24: hours=int(timestamp/60/60) return"%s小时前"%hours eliftimestamp>=60*60*24andtimestamp<60*60*24*30: days=int(timestamp/60/60/24) return"%s天前"%days else: returnvalue.strftime("%Y/%m/%d%H:%M")
views.py中定义视图函数,并且构造一个时间:
fromdjango.shortcutsimportrender fromdatetimeimportdatetime defindex(request): context={ 'time':datetime(year=2019,month=1,day=16,hour=23,minute=44,second=0) } returnrender(request,'index.html',context=context)
index.html中进行调用:
{#如果想要使用自定义的过滤器的话,就必须要先导入,导入的名称为自定义过滤器所处的文件名#} {#必须要把app安装到settings.py文件中#} {%loadmy_fliter%} <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Title</title> </head> <body> {{time|time_since}} </body> </html>
浏览器中查看结果:
以上是“Python如何实现自定义计算时间过滤器”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...