Django:我怎样才能将一个变量从锚标记传递到url中?

时间:2017-09-08 23:11:15

标签: python django orm backend templatetags

再次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']

1 个答案:

答案 0 :(得分:0)

它比评论允许的时间更长,所以:

  1. 参数是路径的一部分,而不是查询参数:{% url 'wish_item' id=x.id %}

  2. 你的正则表达式(很可能)是错误的。

    (?P<id>\d#)
    

    这只接受一位数后跟一个井号。可能你的意思是这个?

    (?P<id>\d+)
    

    即一个或多个数字?
    作为参考,您拥有完整的正则表达式语法over here。顺便说一句,如果你只有一个数字ID,我建议坚持这个:

    (?P<id>[0-9]+)
    

    差异是\d也会接受在unicode中标记为数字的其他字符,以后您可能不会处理。