我有一个显示日期的应用。如果日期的年份与当前年份相同,我想以F j
格式打印日期,如果不同,我想以F j, Y
格式打印日期。我认为这是表示逻辑,并希望将其封装在模板代码中,而无需修改我的视图。
理想情况下,我想要像:
{{ the_date|date:'F j' }}{% if the_date.year == now.year %}{{ the_date|date:', Y' }}{% endif %}
问题是我无法找到一种方法,可以在if标签中使用当前年份。我知道我可以在我的模板中加入today_dt
并与之进行比较。但是,我想知道是否有办法不必修改我的观点。
答案 0 :(得分:3)
您应该使用自定义模板标记过滤器(https://docs.djangoproject.com/en/dev/howto/custom-template-tags/)看起来像
import datetime
from django import template
from django.utils.dateformat import format
register = template.Library()
@register.filter
def custom_date(date):
now = datetime.datetime.now()
if date.year == now.year:
return format(date, 'F j')
return format('F j, Y')
然后在你的模板中
{% load custom_tags %}
{{ the_date|custom_date }}