如何将模板参数值设置为另一个标签的值?

时间:2013-06-28 12:08:42

标签: django

我有一个模板标签来生成网址,如下所示;

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

我希望根据当前年度自动生成'2013'(年)。有一个标签可以执行此操作{% now 'Y' %}但是我不能在现有的模板标签中使用它,因为它只会产生错误。

我是否需要创建自定义标记才能执行此操作?

3 个答案:

答案 0 :(得分:1)

可能更好的决定是在urls.py设置默认参数吗?

示例urls.py

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

答案 1 :(得分:0)

That就是你想要的。

也许这个:

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

答案 2 :(得分: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>