代码之家  ›  专栏  ›  技术社区  ›  V. Snow

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

  •  0
  • V. Snow  · 技术社区  · 7 年前

    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的正确方法是什么?我的url中的正则表达式有什么问题吗?还是我在模板标记中写错了?二者都

    编辑: 将模板标记更改为

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

    Reverse for 'wish_item' with keyword arguments '{u'id': 1}' not found. 1 pattern(s) tried: ['wish_item']
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   spectras    7 年前

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

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

    2. 您的regexp(很可能)错误。

      (?P<id>\d#)
      

      (?P<id>\d+)
      

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

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

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