在我的urls.py文件中:
(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/section/(?P<slug>[-\w]+)/$',
'paper.views.issue_section_detail',
{},
'paper_issue_section_detail'
),
我正尝试在模板中做到这一点:
{% url paper_issue_section_detail issue.pub_date.year,issue.pub_date.month,issue.pub_date.day,section_li.slug %}
但我得到了这个错误:
TemplateSyntaxError
Caught an exception while rendering: Reverse for 'paper_issue_section_detail' with arguments '(2010, 1, 22, u'business')' and keyword arguments '{}' not found.
然而,如果我将URL模式更改为仅需要一个参数,它就能正常工作。例如:
(r'^(?P<year>\d{4})/$',
'paper.views.issue_section_detail',
{},
'paper_issue_section_detail'
),
并且:
{% url paper_issue_section_detail issue.pub_date.year %}
似乎当我使用'url'模板标签传递一个以上的参数时会报错——使用两个参数也会得到相同的错误。有没有其他传递多个参数的方法?我已经尝试了传递命名关键字参数,但是那样会生成类似的错误。
顺带一提,相关视图的开头如下:
def issue_section_detail(request, year, month, day, slug):
如何向url模板标签传递多个参数?
url
标签。你应该使用issue.pub_date|date:"m"
而不是issue.pub_date.month|date:"m"
。date
过滤器作用于datetime
对象(pub_date 属性),而不是整数(pub_date.month 属性)。 - Gregor Müllegger