自定义模板标记,以获取Django中的剩余天数

时间:2013-10-02 07:54:17

标签: django django-templates

我有一个这样的模型:

class WeddingDate(models.Model):
    user = models.ForeignKey(User)
    date = models.DateField(help_text="Date should be in 1991-07-22 format!")

用户输入他们的婚礼日期。并且,我在base.html找到他们的婚礼剩余的日子。我正在尝试为它创建自定义模板标记。

我创建了一个名为templatetags的目录,并创建了一个名为remainingdays.py

的文件
from models import WeddingDate
from django import template
from datetime import date

register = template.Library()

def get_remaining_day(user):
    date = WeddingDate.objects.get(pk=user)
    current_date = date.today()
    days = date.date - current_date
    return days.days 

现在,如何在{% get_remaining_day %}

等模板中显示它

1 个答案:

答案 0 :(得分:2)

首先,您需要选择要编写的模板标签类型。使用assignment tag可能最简单。您还需要register the template tag,以便它可以在您的模板中使用:

低于你的功能:

def get_remaining_day(user):
    ...
register.assignment_tag('get_remaining_day', get_remaining_day)

或作为装饰者:

@register.assignment_tag(name='get_remaining_day')
def get_remaining_day(user):
    ...

现在您可以从模板中调用它:

{% get_remaining_day as day %}
{{ day }}