再次Django ...... 我只看到一种方法,但我收到了一个错误。
我有网址:
url(r'^wish_item/(?P<id>\d#)$', views.wish_item, name="wish_item")
和视图,
def wish_item(request, id):
但我模板中的锚标记导致我的NoReverseMatch。
{% for x in myitems %}
<a href="{% url 'wish_item' %}?id={{x.id}}">{{x.item}}</a>
{% endfor %}
将变量传递到url的正确方法是什么?我的网址中的正则表达式有什么问题,还是我在模板标记中写错了?既?
编辑: 将模板标记更改为
<a href="{% url 'wish_item' id=x.id %}">{{x.item}}</a>
但是我仍然得到错误(在将url清除为/ wish_item之后,因为正则表达式也给了我一个错误):
Reverse for 'wish_item' with keyword arguments '{u'id': 1}' not found. 1 pattern(s) tried: ['wish_item']
答案 0 :(得分:0)
它比评论允许的时间更长,所以:
参数是路径的一部分,而不是查询参数:{% url 'wish_item' id=x.id %}
你的正则表达式(很可能)是错误的。
(?P<id>\d#)
这只接受一位数后跟一个井号。可能你的意思是这个?
(?P<id>\d+)
即一个或多个数字?
作为参考,您拥有完整的正则表达式语法over here。顺便说一句,如果你只有一个数字ID,我建议坚持这个:
(?P<id>[0-9]+)
差异是\d
也会接受在unicode中标记为数字的其他字符,以后您可能不会处理。