복붙노트

[PYTHON] Django 템플릿에서 Humanize를 사용하여 "x 일 전"유형 시간을 표시하는 방법은 무엇입니까?

PYTHON

Django 템플릿에서 Humanize를 사용하여 "x 일 전"유형 시간을 표시하는 방법은 무엇입니까?

내가 이것을 할 때 :

{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}

2 일, 19 시간 전에받습니다.

시간없이 2 일간을 어떻게 얻을 수 있습니까? 기본적으로 동영상이 하루 전보다 작게 발표 된 경우 X 시간 전이라고 말하면 X 일 전, 며칠 후에 계산됩니다. 나는 단지 1 시간 5 분 또는 2 일 13 분 전에 원하지 않는다. 그냥 첫 번째 부분.

나는 인간화 문서를 보았지만 내가 필요한 것을 찾지 못했습니다.

해결법

  1. ==============================

    1.Django에는 앞에서 언급 한 동일한 출력을 제공하는 내장 템플릿 필터 timesince가 있습니다. 다음 필터는 쉼표 다음의 두 번째 부분을 제거합니다.

    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]}
    
  2. ==============================

    2.django.contrib.humanize.templatetags.humanize.py를 myapp.templatetags.myhumanize로 복사하고 필요에 맞게 수정해야합니다. ( "x 일, y 시간 전에"반환하는 실제 줄을 찾을 수 없습니다. 어떤 버전의 django / humanize 사용하고 있습니까?)

    django.contrib.humanize.templatetags.humanize.py를 myapp.templatetags.myhumanize로 복사하고 필요에 맞게 수정해야합니다. ( "x 일, y 시간 전에"반환하는 실제 줄을 찾을 수 없습니다. 어떤 버전의 django / humanize 사용하고 있습니까?)

  3. ==============================

    3.ExpressionWrapper 나 Case / When를 사용하여 쿼리 세트와 데이터베이스를 활용하여 직접 포맷팅 할 수도 있습니다.

    ExpressionWrapper 나 Case / When를 사용하여 쿼리 세트와 데이터베이스를 활용하여 직접 포맷팅 할 수도 있습니다.

    내 머리 꼭대기에서 복수화 된 요일 / 일과 결합하여 출력 예 :

    overdue = ExpressionWrapper(timezone.now() - F('due_date'), output_field=fields.DurationField())
    objects = Activity.objects.all().order_by('-due_date').annotate(overdue=overdue)
    
  4. from https://stackoverflow.com/questions/6494921/how-to-display-x-days-ago-type-time-using-humanize-in-django-template by cc-by-sa and MIT license