我有一个模板标签来生成网址,如下所示;
<li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li>
我希望根据当前年度自动生成'2013'(年)。有一个标签可以执行此操作{% now 'Y' %}
但是我不能在现有的模板标签中使用它,因为它只会产生错误。
我是否需要创建自定义标记才能执行此操作?
答案 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>