首页 > 解决方案 > 重定向页面有其他pk

问题描述

你好我正在做一个网站,我有一个问题。当我在减少项目数量后重定向用户时,“pk”变成项目的 pk,并且不保留购物车的“pk”。我应该怎么做才能防止“购物车页面”不改变“pk”。HTML:

{% for item in order_items %}
                        <div action class="item-row">
                            <p class="cart-item">{{ item.item.title }}</p>
                            <div class="cart-item item-quantity"><p>{{item.quantity}}</p></div>
                            <p class="cart-item">{{ item.total }}</p>
                            <form action="{% url 'cart-page' pk=item.id %}" method="POST"> {% csrf_token %}
                                <button name="minus">-</button>
                                <button name="plus">+</button>
                            </form>
                        </div>
                    {% endfor %}

视图.py

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")
        if 'plus' 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 redirect('cart-page')

标签: pythondjango

解决方案


推荐阅读