19

私がこれをするとき:

{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}

私は得る2 days, 19 hours ago

どうすれば時間なしでたった2日を得ることができますか。基本的に、ビデオが1日以内に公開された場合は、X時間前と表示され、X日前のように日数でカウントされ、その後数週間でカウントされます。1時間5分前や2日13分前は欲しくない。ちょうど最初の部分。

ヒューマナイズドキュメントを調べましたが、必要なものが見つかりませんでした。

4

4 に答える 4

31

Django には、上記と同じ出力を提供する組み込みのテンプレート フィルターがあります。 timesince次のフィルターは、カンマの後の 2 番目の部分を削除するだけです。

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]}
于 2011-06-27T15:32:23.973 に答える
2

django.contrib.humanize.templatetags.humanize.pyを myapp.templatetags.myhumanize に複製し、必要に応じて変更する必要があります。(「x 日、y 時間前」を返す実際の行が見つかりません。どのバージョンの django/humanize を使用していますか?)

于 2011-06-27T15:22:55.713 に答える