Python自定義計(jì)算時(shí)間過(guò)濾器實(shí)現(xiàn)過(guò)程的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹Python自定義計(jì)算時(shí)間過(guò)濾器實(shí)現(xiàn)過(guò)程的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)公司品牌網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷。我們專注企業(yè)品牌在網(wǎng)站中的整體樹(shù)立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

在寫(xiě)自定義的過(guò)濾器時(shí),因?yàn)閐jango.template.Library.filter()本身可以作為一個(gè)裝飾器,所以可以使用:

register = django.template.Library()@register.filter  代替 register.filter("過(guò)濾器名","函數(shù)名")

如果使用@register.filter進(jìn)行注冊(cè)自定義的過(guò)濾器,并且沒(méi)有傳遞任何參數(shù),那么默認(rèn)的過(guò)濾器名和函數(shù)名是相同的,當(dāng)然,也可以進(jìn)行修改,只需要在@register.filter("過(guò)濾器名"),此時(shí)的過(guò)濾器名就更改了,就可在DTL模板中使用自定義的過(guò)濾器了。

定義時(shí)間計(jì)算過(guò)濾器在顯示的時(shí)候,時(shí)間的顯示規(guī)則:time距離現(xiàn)在多長(zhǎng)時(shí)間間隔

如果時(shí)間間隔小于1分鐘,那么就像是“剛剛”如果時(shí)間間隔大于1分鐘小于1小時(shí),那么就顯示“xx分鐘前”如果是大于1小時(shí)小于24小時(shí),那么就顯示“xx小時(shí)前”如果是大于24小時(shí),小于30天,那么就顯示“xx天前”'否則就是顯示具體時(shí)間

示例代碼如下:

自定義過(guò)濾器的文件my_fliter.py

@register.filter()def time_since(value):  # 首先對(duì)傳進(jìn)來(lái)的時(shí)間進(jìn)行判斷,如果是datetime類型的就可以與當(dāng)前的時(shí)間進(jìn)行比較,  # 如果不是datetime類型的,就直接返回value  if not isinstance(value,datetime):    return value  # 如果可以到達(dá)這里,就代表為datetime類型的,  # timedelay.total_seconds()屬性  now = datetime.now()  timestamp = (now - value).total_seconds()  if timestamp < 60:    return "剛剛"  elif timestamp >= 60 and timestamp < 60*60:    # 在python3中如果兩數(shù)相除,有余數(shù)的話,就會(huì)保持小數(shù),這個(gè)時(shí)候我們就可以使用int()函數(shù),進(jìn)行轉(zhuǎn)換    minutes = int(timestamp/60)    return "%s分鐘前" % minutes  elif timestamp >= 60*60 and timestamp < 60*60*24:    hours = int(timestamp/60/60)    return "%s小時(shí)前" % hours  elif timestamp >= 60*60*24 and timestamp < 60*60*24*30:    days = int(timestamp/60/60/24)    return "%s天前" % days  else:    return value.strftime("%Y/%m/%d %H:%M")

views.py中定義視圖函數(shù),并且構(gòu)造一個(gè)時(shí)間:

from django.shortcuts import renderfrom datetime import datetimedef index(request):  context = {    'time': datetime(year=2019,month=1,day=16,hour=23,minute=44,second=0)  }  return render(request,'index.html',context=context)

index.html中進(jìn)行調(diào)用:

{# 如果想要使用自定義的過(guò)濾器的話,就必須要先導(dǎo)入 ,導(dǎo)入的名稱為自定義過(guò)濾器所處的文件名 #}{# 必須要把a(bǔ)pp安裝到settings.py文件中 #}{% load my_fliter %}<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body>  {{ time|time_since }}</body></html>

以上是“Python自定義計(jì)算時(shí)間過(guò)濾器實(shí)現(xiàn)過(guò)程的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:Python自定義計(jì)算時(shí)間過(guò)濾器實(shí)現(xiàn)過(guò)程的示例分析-創(chuàng)新互聯(lián)
URL地址:http://bm7419.com/article32/dpdpsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站收錄、網(wǎng)站內(nèi)鏈關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)