【问题标题】:django returns NoReverseMatch but it actually got the valuedjango 返回 NoReverseMatch 但它实际上得到了值
【发布时间】: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的记录,我认为重定向应该没有问题,因为它只是删除了一条记录后返回到购物车视图。

标签: python django


【解决方案1】:

尝试将其指定为键值参数:

    <th><a href="{% url 'delete-cart' pk=c.id %}">DELETE</a></th>

【讨论】:

  • 返回Reverse for 'delete-cart' with keyword arguments '{'pk': 4}' not found. 1 pattern(s) tried: ['cart/delete_cart/&lt;int:pk&gt;']
【解决方案2】:

将您的网址格式更改为

path('delete_cart/<int:pk>/',views.delete_cart,name='delete-cart')

【讨论】:

  • 天哪,你是对的先生,现在我想起来了,谢谢你们的时间!
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
相关资源
最近更新 更多