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

Django 如何将模板参数值设置为另一个标记的值?,django,Django,我有一个模板标签来生成url,如下所示 <li><a href="{% url 'blog_archive' year='2013' %}">Archive</a></li> 我希望根据当前年份自动生成“2013”(年份)。有一个标记可以执行此操作{%now'Y'%},但是我不能在现有模板标记中使用它,因为它只会产生错误 是否需要创建自定义标记来执行此操作?是您想要的 也许是这样: <li><a href="{% url '

我有一个模板标签来生成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')}),
    )