简体   繁体   中英

NoReverseMatch at "/"

Hello I get an error "NoReverseMatch at "/" It occurs when i change in HTML template to {% url 'cart-page' cart.id %}, when i use user.username everything works but I would like to have a cart.id instead username. It is not fault of urls.py because i have changed int to str, and vice versa.

code:

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>

views.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")

urls.py

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

in your 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>

you have to tell what is id you are referring to and tell me if still does not work for you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM