python - 重定向页面有其他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')
解决方案
推荐阅读
- windows - 我可以在同一台服务器上安装、删除和重新安装相同的 SSL 证书吗
- angular - 未能在“HTMLInputElement”上设置“值”属性
- python - 用负数四舍五入
- error-handling - dropwizard 应用程序中的自定义 ErrorHandler
- angular - p-fileUpload : 上传后如何读取文件
- time - 将 2 个虚拟机的时间配置为相同,以毫秒为单位
- excel - Excel VBA 对于每个嵌套循环
- typescript - Typescript 编译:在 Visual Studio 2017 中使用 Webpack
- angular - 无法使用按钮 Angular 显示/隐藏画布
- ios - NEVPNManager VPN 配置 SharedSecret 错误