2013-06-28 61 views
0

我有一個模板標籤來生成如下的url;如何將模板參數值設置爲另一個標籤的值?

<li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li> 

我想根據當年自動生成'2013'(年)。有一個標籤可以做到這一點{% now 'Y' %}但是我不能在現有的模板標籤內使用它,因爲它只是產生錯誤。

我是否需要創建自定義標籤才能做到這一點?

+0

你爲什麼想要做額外的計算模板?反正你把它發送到視圖。 – karthikr

+0

urls.py'的默認參數更適合於網址請參閱下面的示例 –

+0

您正在尋找的是「嵌套模板標籤」。在SO上搜索它。關於這個問題有很多問題。找到一個適合你需要的人。 –

回答

0

這是不可能的,包括裏面另一個像這樣的標籤。

您可以創建一個assignment tag,它將標記結果存儲在上下文變量中而不是輸出它。

文檔中的示例分配標籤用於模板標籤get_current_time,您可以使用它來代替{% now %}標籤。

在你mytags.py模板標籤模塊:

from django import template 

register = template.Library() 

@register.assignment_tag 
def get_current_time(format_string): 
    return datetime.datetime.now().strftime(format_string) 

在模板:

{% load mytags %} 
{% get_current_time "%Y" as year %} 
<li><a href="{% url 'blog_archive' year=year %}">Archive</a></li> 
+0

謝謝,我可以告訴你這是一個更簡潔和合乎邏輯的方法。 – Deep

0

That是你想要的。

也許這:

<li><a href="{% url 'blog_archive' year=value|date:"Y" %}">Archive</a></li> 
# just pass the datetime object as 'value' 
1

可能在urls.py更好的決定將被設爲默認參數?

urls.py

from django.utils.timezone import now 
... 
urlpatterns = patterns('app.views', 
    url(r'^.../$', 'blog_archive', {'year': now().strftime('%Y')}), 
) 
+0

或者它甚至可以在視圖中計算。 – karthikr

相關問題