最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自定義計(jì)算時(shí)間過(guò)濾器實(shí)現(xiàn)過(guò)程解析

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

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

在寫(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類(lèi)型的就可以與當(dāng)前的時(shí)間進(jìn)行比較,
  # 如果不是datetime類(lèi)型的,就直接返回value
  if not isinstance(value,datetime):
    return value
  # 如果可以到達(dá)這里,就代表為datetime類(lèi)型的,
  # 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à),就會(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 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中進(jìn)行調(diào)用:

{# 如果想要使用自定義的過(guò)濾器的話(huà),就必須要先導(dǎo)入 ,導(dǎo)入的名稱(chēng)為自定義過(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>

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

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

相關(guān)文章

  • 在springboot中使用攔截器的步驟詳解

    在springboot中使用攔截器的步驟詳解

    攔截器Interceptor,是SpringMVC中的核心內(nèi)容,在SpringBoot中使用Interceptor,同時(shí)采用全注解開(kāi)發(fā),這篇文章主要介紹了在springboot中使用攔截器的步驟,需要的朋友可以參考下
    2022-01-01
  • 深入分析JAVA 反射和泛型

    深入分析JAVA 反射和泛型

    這篇文章主要介紹了JAVA 反射和泛型的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • springboot集成websocket的四種方式小結(jié)

    springboot集成websocket的四種方式小結(jié)

    本文主要介紹了springboot集成websocket的四種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java多線(xiàn)程通信問(wèn)題深入了解

    Java多線(xiàn)程通信問(wèn)題深入了解

    下面小編就為大家?guī)?lái)一篇深入理解JAVA多線(xiàn)程之線(xiàn)程間的通信方式。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • Java8中的LocalDateTime和Date一些時(shí)間操作方法

    Java8中的LocalDateTime和Date一些時(shí)間操作方法

    這篇文章主要介紹了Java8中的LocalDateTime和Date一些時(shí)間操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • ElasticSearch6.2.3+head插件安裝的方法步驟

    ElasticSearch6.2.3+head插件安裝的方法步驟

    這篇文章主要介紹了ElasticSearch6.2.3+head插件安裝的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • SpringBoot從0到1整合銀聯(lián)無(wú)跳轉(zhuǎn)支付功能附源碼

    SpringBoot從0到1整合銀聯(lián)無(wú)跳轉(zhuǎn)支付功能附源碼

    這篇文章主要介紹了SpringBoot從0到1整合銀聯(lián)無(wú)跳轉(zhuǎn)功能支付附源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java使用fill()數(shù)組填充的實(shí)現(xiàn)

    Java使用fill()數(shù)組填充的實(shí)現(xiàn)

    這篇文章主要介紹了Java使用fill()數(shù)組填充的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java 從網(wǎng)上下載文件的幾種方式實(shí)例代碼詳解

    Java 從網(wǎng)上下載文件的幾種方式實(shí)例代碼詳解

    本文通過(guò)實(shí)例代碼給大家介紹了java從網(wǎng)上下載文件的幾種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-08-08
  • java操作excel的方法

    java操作excel的方法

    這篇文章主要介紹了java操作excel的方法,實(shí)例分析了java針對(duì)excel文件的讀寫(xiě)、打開(kāi)、保存等操作技巧,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

苍南县| 华宁县| 新和县| 邵东县| 永济市| 务川| 巴林左旗| 额尔古纳市| 揭东县| 万宁市| 临朐县| 盐池县| 炎陵县| 宁波市| 南木林县| 樟树市| 娄烦县| 台南县| 莱西市| 麦盖提县| 洛隆县| 如皋市| 南充市| 道孚县| 鲜城| 平潭县| 云南省| 托里县| 都昌县| 纳雍县| 随州市| 晴隆县| 丘北县| 资阳市| 榆中县| 安义县| 荃湾区| 鹿邑县| 扶沟县| 崇仁县| 洪洞县|