【发布时间】:2020-10-01 23:34:26
【问题描述】:
我正在为我的网站制作一个购物车应用程序,昨天工作的功能今天坏了。
我得到了Reverse for 'delete-cart' with arguments '(4,)' not found. 1 pattern(s) tried: ['cart/delete_cart/<int:pk>']error,但是你可以看到它已经显示了参数的值,证明它得到了值但仍然返回了未找到的错误,为什么?
这是我的相关代码:
urls.py
urlpatterns = [
path('',views.myCartListView,name='my-cart'),
url(r'^delete_cart/<int:pk>',views.delete_cart,name='delete-cart'),
]
views.py
@login_required
def myCartListView(request):
context = {}
if request.user:
data = Cart.objects.filter(client=request.user)
context['cart'] = data
return render(request,'cart/my_cart.html',context)
@login_required
def delete_cart(request,pk):
record = Cart.objects.get(pk=pk)
record.delete()
return redirect('cart/')
my_cart.html
{% for c in cart %}
<tr>
<th>{{c.item}}</th>
<th>{{c.quantity}}</th>
<th>{{c.price}}</th>
<th>{{c.get_total_price}}</th>
<th><a href="{% url 'delete-cart' c.id %}">DELETE</a></th>
</tr>
{% endfor %}
【问题讨论】:
-
您是否检查过是否有 id 为 4 的项目?删除后,您尝试再次重定向到您的购物车。我认为你的错误来自于此。
-
@ytsejam 如果该对象不存在,它将引发另一种类型的错误 - DoesNotExist。
-
@SergeyPugach 是的,这就是我编辑评论的原因,我理解错误。
-
是的,我的数据库中有一条id=4的记录,我认为重定向应该没有问题,因为它只是删除了一条记录后返回到购物车视图。