Django 如何将模板参数值设置为另一个标记的值?
我有一个模板标签来生成url,如下所示Django 如何将模板参数值设置为另一个标记的值?,django,Django,我有一个模板标签来生成url,如下所示 <li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li> 我希望根据当前年份自动生成“2013”(年份)。有一个标记可以执行此操作{%now'Y'%},但是我不能在现有模板标记中使用它,因为它只会产生错误 是否需要创建自定义标记来执行此操作?是您想要的 也许是这样: <li><a href="{% url '
<li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li>
我希望根据当前年份自动生成“2013”(年份)。有一个标记可以执行此操作{%now'Y'%}
,但是我不能在现有模板标记中使用它,因为它只会产生错误
是否需要创建自定义标记来执行此操作?是您想要的
也许是这样:
<li><a href="{% url 'blog_archive' year=value|date:"Y" %}">Archive</a></li>
# just pass the datetime object as 'value'
#只需将datetime对象作为“值”传递
不可能像这样将一个标记包含在另一个标记中
您可以创建,它将标记的结果存储在上下文变量中,而不是输出它
文档中的示例分配标记用于模板标记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>
{%loadmytags%}
{%获取当前时间“%Y”作为年份%}
可能更好的决定是在url.py
处设置默认参数
示例url.py
:
为什么要在模板中执行其他计算?无论如何,您都要将其发送到视图中。URL的默认参数最好在
urls.py中执行。请参见下面的示例,您要查找的是“嵌套模板标记”。搜索它就这样。这方面有很多问题。找到一个适合你需要的。或者它甚至可以在视图中计算。谢谢你,我可以告诉你,这是一个更整洁、更合乎逻辑的方法。
from django.utils.timezone import now
...
urlpatterns = patterns('app.views',
url(r'^.../$', 'blog_archive', {'year': now().strftime('%Y')}),
)