如何在Django模板中使用Humanize显示“x days ago”类型的时间?

2024-05-19 07:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

当我这样做时:

{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}

我得到2 days, 19 hours ago

我怎么能只有两天没有时间。基本上,如果视频是在不到一天之前发布的,那么它应该是X小时之前,然后应该是X天之前,然后是几周之前。我只是不想1小时5分钟前或2天13分钟前。只是第一部分。

我看了人性化的医生,但找不到我需要的东西。


Tags: date视频video时间loadagodays医生
3条回答

您应该将django.contrib.humanize.templatetags.humanize.py复制到myapp.templatetags.myhumanize并根据需要进行修改。(我找不到返回“x days,y hours ago”的实际行。你在使用哪一个版本的django/humanize?)

Django有a built-in template filtertimesince,它提供与您前面提到的相同的输出。下面的过滤器只是去掉逗号后面的第二部分:

from datetime import datetime, timedelta
from django import template
from django.utils.timesince import timesince

register = template.Library()

@register.filter
def age(value):
    now = datetime.now()
    try:
        difference = now - value
    except:
        return value

    if difference <= timedelta(minutes=1):
        return 'just now'
    return '%(time)s ago' % {'time': timesince(value).split(', ')[0]}

相关问题 更多 >

    热门问题