我有一個模板標籤來生成如下的url;如何將模板參數值設置爲另一個標籤的值?
<li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li>
我想根據當年自動生成'2013'(年)。有一個標籤可以做到這一點{% now 'Y' %}
但是我不能在現有的模板標籤內使用它,因爲它只是產生錯誤。
我是否需要創建自定義標籤才能做到這一點?
我有一個模板標籤來生成如下的url;如何將模板參數值設置爲另一個標籤的值?
<li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li>
我想根據當年自動生成'2013'(年)。有一個標籤可以做到這一點{% now 'Y' %}
但是我不能在現有的模板標籤內使用它,因爲它只是產生錯誤。
我是否需要創建自定義標籤才能做到這一點?
這是不可能的,包括裏面另一個像這樣的標籤。
您可以創建一個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>
謝謝,我可以告訴你這是一個更簡潔和合乎邏輯的方法。 – Deep
That是你想要的。
也許這:
<li><a href="{% url 'blog_archive' year=value|date:"Y" %}">Archive</a></li>
# just pass the datetime object as 'value'
可能在urls.py
更好的決定將被設爲默認參數?
例urls.py
:
from django.utils.timezone import now ... urlpatterns = patterns('app.views', url(r'^.../$', 'blog_archive', {'year': now().strftime('%Y')}), )
或者它甚至可以在視圖中計算。 – karthikr
你爲什麼想要做額外的計算模板?反正你把它發送到視圖。 – karthikr
urls.py'的默認參數更適合於網址請參閱下面的示例 –
您正在尋找的是「嵌套模板標籤」。在SO上搜索它。關於這個問題有很多問題。找到一個適合你需要的人。 –