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

2024-05-04 02:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

又是Django。。。 我只看到了一种方法,但我得到了一个错误。在

我有网址:

url(r'^wish_item/(?P<id>\d#)$', views.wish_item, name="wish_item")

还有风景

^{pr2}$

但是我模板中的锚定标记导致了一个NoReverseMatch。在

{% for x in myitems %}
<a href="{% url 'wish_item' %}?id={{x.id}}">{{x.item}}</a>
{% endfor %}

将变量传递到url的正确方法是什么?我的url中的regex有什么问题吗?还是我在模板标记中写错了?两者都有?在

编辑: 已将模板标记更改为

<a href="{% url 'wish_item' id=x.id %}">{{x.item}}</a>

但是我仍然收到错误(在清除了just/wish_item的url之后,因为regex也给了我一个错误):

Reverse for 'wish_item' with keyword arguments '{u'id': 1}' not found. 1 pattern(s) tried: ['wish_item']

Tags: django方法name标记模板idurlfor
1条回答
网友
1楼 · 发布于 2024-05-04 02:50:53

它的长度超出了评论允许的长度,因此:

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

  2. 你的regexp(很可能)是错的。在

    (?P<id>\d#)
    

    它只接受一个数字后跟一个哈希符号。也许你是说这个?在

    ^{pr2}$

    也就是说,一个或多个数字?
    作为参考,您有完整的regex语法over here。顺便说一句,如果你只有一个数字标识,我建议你坚持这样做:

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

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

相关问题 更多 >