使用django-shopping-cart 0.1遇Reverse for 'cart_add'未找到错误求助
问题解决:Reverse for 'cart_add' not found
核心原因:未使用URL命名空间
你的urls.py中设置了app_name='shop',这意味着该应用下的所有URL名称都隶属于shop命名空间。模板中直接使用{% url 'cart_add' product.id %}会导致Django无法定位到对应的URL配置,因为它不知道该去哪个应用的路由中查找这个名称。
修复步骤:
- 修正模板中的URL反向解析
将home.html里的链接修改为带命名空间的格式:
<a href="{% url 'shop:cart_add' product.id %}">Add</a>
- 规范视图中的重定向写法(可选但推荐)
你的视图中使用redirect("home")和redirect("cart_detail")同样存在命名空间缺失问题,建议同步修正为:
# cart_add视图中的重定向 return redirect("shop:home") # 其他视图中的重定向 return redirect("shop:cart_detail")
额外发现的拼写错误
模板中循环变量是product,但你写的是{{produit.name}}和{{produit.price}}(把product拼成了produit),这会导致页面无法正确渲染产品信息,需要修正为:
<p>{{product.name}}<br> {{product.price}} <a href="{% url 'shop:cart_add' product.id %}">Add</a> </p>
验证修复
修改完成后重启Django开发服务器,点击Add链接即可正常触发cart_add视图,反向解析错误将不再出现。
内容的提问来源于stack exchange,提问作者Khalifa
相关产品推荐
相关产品推荐

