👨🏻‍💻

6. 시간 형식에 custom filter 적용

브랜치
채팅
생성 일시
2023/09/26 01:09
작성일
2023/09/26
작성자
최종 편집 일시
2023/10/11 04:20

custom_timesince

humanize의 timesince 필터를 적용했을 때, 9시간, 36분 같이 시간, 분으로 표시되는 문제가 있습니다.
이에 조금 더 깔끔한 시간 형식 표기를 위해 커스텀 필터를 작성했습니다.
carrotapp 하위에 templatetags를 생성하고, custom_timesince.py를 추가했습니다.
# custom_timesince.py from django import template from django.utils import timezone register = template.Library() @register.filter(name='custom_timesince') def custom_timesince(value): now = timezone.now() difference = now - value days = difference.days seconds = difference.seconds minutes = seconds // 60 hours = seconds // 3600 weeks = days // 7 if days >= 7: return f"{weeks}주 전" elif days >= 1: return f"{days}일 전" elif hours >= 1: return f"{hours}시간 전" elif minutes >= 1: return f"{minutes}분 전" else: return "방금 전"
Python
복사
1시간 이내일 경우 OO분 전
하루 이내일 경우 OO시간 전
7일 이내일 경우 OO일 전
그 이상일 경우 OO주 전으로 표시됩니다.