首页 > 解决方案 > “/”处的 NoReverseMatch

问题描述

您好,我收到错误“NoReverseMatch at”/”当我将 HTML 模板更改为 {% url 'cart-page' cart.id %},当我使用 user.username 时,一切正常,但我想要一个购物车.id 代替用户名。这不是 urls.py 的错,因为我已将 int 更改为 str ,反之亦然。

代码:

HTML:

<div class="navbar__rightside">
            <a class="navbar__link" href="{% url 'cart-page' cart.id %}">Cart</a>
            <a class= "navbar__link" href="{% url 'profile-page' user.username %}">Profile</a>
            <a class="navbar__link" href="{% url 'logout-page' %}">Logout</a>
        </div>

视图.py:

class ShopListView(ListView):
    model = Item
    template_name =  'shop/home.html'
    context_object_name = 'items'
    def post(self, request, *args, **kwargs):
        return reverse('detail-page')

class CartView(TemplateView):
 template_name = "shop/cart.html"
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['cart'] = Cart.objects.annotate(
        price=Sum(F('orderitem__item__price') * F('orderitem__quantity'))
        ).get(order_user= self.request.user)
        cart = context['cart']
        cart.total = cart.price
        cart.save()
        context['order_items'] = OrderItem.objects.filter(cart=cart)
        return context
    def post(self, request, pk):
        if 'minus' in request.POST:
            cart = Cart.objects.get(order_user=self.request.user)
            OrderItem.objects.filter(id=pk, cart=cart).update(
            quantity=F('quantity')-1)
            return HttpResponse("cart uptaded")

网址.py

    path('', ShopListView.as_view(), name='home-page'),
    path('cart/<int:pk>/', CartView.as_view(), name='cart-page'),

标签: pythondjango

解决方案


在你的 html

<div class="navbar__rightside">
            <a class="navbar__link" href="{% url 'cart-page' pk=cart.id %}">Cart</a>
            <a class= "navbar__link" href="{% url 'profile-page' user.username %}">Profile</a>
            <a class="navbar__link" href="{% url 'logout-page' %}">Logout</a>
        </div>

你必须告诉我你指的是什么 id 并告诉我是否仍然不适合你


推荐阅读