如何在Django模板中显示日期时有条件地输出一年

时间:2014-10-03 10:05:39

标签: django django-templates

我有一个显示日期的应用。如果日期的年份与当前年份相同,我想以F j格式打印日期,如果不同,我想以F j, Y格式打印日期。我认为这是表示逻辑,并希望将其封装在模板代码中,而无需修改我的视图。

理想情况下,我想要像:

{{ the_date|date:'F j' }}{% if the_date.year == now.year %}{{ the_date|date:', Y' }}{% endif %}

问题是我无法找到一种方法,可以在if标签中使用当前年份。我知道我可以在我的模板中加入today_dt并与之进行比较。但是,我想知道是否有办法不必修改我的观点。

1 个答案:

答案 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 }}