Django:如何将变量从锚标记传递到 url?

Django: How can I pass a variable into the url from an anchor tag?

又是 Django... 我只见过一种方法来执行此操作,但出现错误。

我有 url:

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 的正确方法是什么?我的 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. 参数是路径的一部分,不是查询参数:{% url 'wish_item' id=x.id %}

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

    (?P<id>\d#)
    

    这只接受一位数字后跟一个井号。大概你是这个意思?

    (?P<id>\d+)
    

    也就是一位还是多位?
    作为参考,您有完整的正则表达式语法 over here。顺便说一下,如果你只有一个数字 id,我建议坚持这样做:

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

    不同之处在于 \d 还将接受其他标记为 unicode 数字的字符,您以后可能不会处理这些字符。