我将对象数组从视图传递到模板,我想为每个对象生成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.
我做错了什么?
答案 0 :(得分:1)
在您的网址中,slug
正则表达式需要包含连字符(并且在我们使用连字符时也可以添加下划线):(?P<slug>[a-zA-Z0-9_\-]+)
答案 1 :(得分:0)
你的论点被命名为:
{% for item in items %}
Item: {{ item.title }}, description: {{ item.description }}
URL: {% url show_item id=item.id slug=item.slug %}
{% endfor %}
答案 2 :(得分:0)
如果我没错,应引用show_item并将参数命名为
{% url 'show_item' id=item.id slug=item.slug %}
还使用以下命令检查网址生成的内容:
{% url 'show_item' id=item.id slug=item.slug as foo %}
{{ foo }}
“as foo”允许您在不引发错误的情况下查看生成的网址。