1

我将对象数组从视图传递到模板,我想在模板中为每个对象生成 URL(到不同的视图)。所以,我的 URLconf 中有:

    url(r'^item/(?P<id>[0-9]+)/(?P<slug>[a-zA-Z0-9]+)$',
    'show_item',
    name='show_item'),

在模板中,我迭代对象列表并尝试生成适合上述 URL 示例的 URL,因此我将 2 个参数传递给每个参数:

    {% for item in items %}
        Item: {{ item.title }}, description: {{ item.description }}
        URL: {% url show_item item.id item.slug %}
    {%  endfor %}

不幸的是,我得到 django 错误:

Reverse for 'show_item' with arguments '(1, u'first-item')' and keyword arguments '{}' not found.

我做错了什么?

4

3 回答 3

1

在您的网址中,您的slug正则表达式需要包含一个连字符(并且还不如在我们使用它时添加一个下划线):(?P<slug>[a-zA-Z0-9_\-]+)

于 2013-01-23T18:49:15.440 回答
0

你的论点被命名为:

 {% for item in items %}
     Item: {{ item.title }}, description: {{ item.description }}
     URL: {% url show_item id=item.id slug=item.slug %}
 {%  endfor %}

url 中命名组的文档

于 2013-01-23T18:47:16.947 回答
0

如果我没记错 show_item 应该被引用和参数命名

{% url 'show_item' id=item.id slug=item.slug %}

还可以使用以下方法检查 url 生成的内容:

{% url 'show_item' id=item.id slug=item.slug as foo %}
{{ foo }}

“as foo”允许您查看生成的 url 而不会引发错误。

于 2015-11-21T16:17:57.563 回答