如何在Django模板中使用Humanize显示"x天前"类型时间?

Vem*_*eme 14 python django humanize

当我这样做:

{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}
Run Code Online (Sandbox Code Playgroud)

我明白了 2 days, 19 hours ago

如何在没有时间的情况下获得2天.基本上如果视频是在不到一天前发布的,那么它应该在X小时前说出来,那么它应该计算在X天之前的几天,然后是几周.我只是不想1小时5分钟前或2天13分钟前.只是第一部分.

我查看了人性化的文档但找不到我需要的东西.

Ber*_*ant 26

Django有一个内置的模板过滤器 timesince,提供你上面提到的相同输出.以下过滤器只是在逗号后删除第二部分:

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]}
Run Code Online (Sandbox Code Playgroud)