欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python自定義計算時間過濾器實現(xiàn)過程解析

 更新時間:2020年01月17日 11:22:17   作者:一笑而過~一笑奈何  
這篇文章主要介紹了Python自定義計算時間過濾器實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了Python自定義計算時間過濾器實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

在寫自定義的過濾器時,因為django.template.Library.filter()本身可以作為一個裝飾器,所以可以使用:

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

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

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

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

示例代碼如下:

自定義過濾器的文件my_fliter.py

@register.filter()
def time_since(value):
  # 首先對傳進來的時間進行判斷,如果是datetime類型的就可以與當(dāng)前的時間進行比較,
  # 如果不是datetime類型的,就直接返回value
  if not isinstance(value,datetime):
    return value
  # 如果可以到達這里,就代表為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ù)的話,就會保持小數(shù),這個時候我們就可以使用int()函數(shù),進行轉(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小時前" % 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)造一個時間:

from django.shortcuts import render
from datetime import datetime
def 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中進行調(diào)用:

{# 如果想要使用自定義的過濾器的話,就必須要先導(dǎo)入 ,導(dǎo)入的名稱為自定義過濾器所處的文件名 #}
{# 必須要把app安裝到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>

瀏覽器中查看結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Java安全編碼之文件和共享目錄的安全性

    淺談Java安全編碼之文件和共享目錄的安全性

    Java程序是跨平臺的,可以運行在windows也可以運行在linux。但是平臺不同,平臺中的文件權(quán)限也是不同的。windows大家經(jīng)常使用,并且是可視化的權(quán)限管理,這里就不多講了。本文主要講講linux下面的文件的權(quán)限和安全性問題,并且探討一下如何在java程序中考慮文件的安全性
    2021-06-06
  • 最新評論