【问题标题】:Python Django templatePython Django 模板
【发布时间】:2011-08-10 12:08:08
【问题描述】:

我可以在 Django 模板语言中以任何方式捕捉当前年份吗?我需要为当年创建一个链接,我不想手动传递它。通过视图发送它会给我一个错误:

Caught NoReverseMatch while rendering: Reverse for 'blog_archive_year' with arguments '()' and keyword arguments '{'year': ''}' not found.

这是网址:

url(r'^(?P<year>\d{4})/$',
        view='post_archive_year',
        name='blog_archive_year'

查看

def post_archive_year(request, year, **kwargs):
    #now = datetime.datetime.now()
    #current_year = now.year
    return date_based.archive_year(
        request,
        #year=current_year,
        year=year,
        date_field='publish',
        queryset=Post.objects.published(),
        make_object_list=True,
        **kwargs
    )
post_archive_year.__doc__ = date_based.archive_year.__doc__

这是虚拟模板:

<a href="{% url blog_archive_year year=2011(I'd like to send him year here) %}">Articols archive</a>

请帮忙:)

【问题讨论】:

    标签: python django templates error-handling


    【解决方案1】:

    首先你应该在 url 中定义年份模式:

    url(r'^(?P<year>\d{4})/$', 'post_archive_year', name='blog_archive_year')
    

    要在模板中打印当前年份,请使用:

    {% now Y %}
    

    【讨论】:

    • 我可以以某种方式将 {% now "Y" %} 的内容保存在变量中吗?如果我像这样传递它,它会不断提示错误:url blog_archive_year year={% now "Y" %} or like url blog_archive_year year=now "Y"。
    • 我认为不可能将“现在”传递给 url 标签。我建议您在视图中将年份添加到模板上下文中。
    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 2018-10-22
    • 2012-04-15
    • 1970-01-01
    • 2015-12-19
    • 2014-03-26
    • 2011-04-07
    • 2010-10-21
    相关资源
    最近更新 更多