ページ上で3日以内に更新された記事に「New!」と表示したりする場合に使えるフィルタを作ってみた。
datetime型と、yyyy-mm-dd形式の文字列の両方に対応。
がんばったらもっと色々なフォーマットに対応できるだろうけど、がんばれなかった。
使う時はエラー処理も入れなきゃ。
# -*- coding: utf-8 -*- from datetime import date, timedelta from django import template register = template.Library() @register.filter def is_new(d, days): if isinstance(d, unicode): target_day = date(*[int(p) for p in d.split("-")]) else: target_day = d.date() today = date.today() last_day = today - timedelta(days) if target_day > last_day: return True else: return False
こんな感じで使う。
... {% for news in news_list %} <li> {% if news.insert_date|is_new:7 %}<img src="/img/icon/new.gif" />{% endif %} <span>{{ news.insert_date|date:"Y/m/d" }}</span> <span>{{ news.title }}</span> </li> {% endfor %} ...