2013-10-02 95 views
1

我有這樣一個模型:自定義模板標籤獲得剩餘的天數在Django

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 %}模板

回答

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 }} 
+0

我在Django 1.5中找不到'Assignment Tag' – pynovice

+0

他們在那裏: https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#assignment-tags。或者,您可以使用「簡單標籤」,直接打印當天。無論如何,您仍然需要註冊您的標籤以使其在您的模板中可用 –

+1

'無效的塊標籤:'get_remaining_day',預期的'endblock'我使用了'作業標籤' – pynovice

相關問題