我正在建立一个电子商务网站,我有一个带有商品的购物车模型,我希望客户选择他们想购买的某种商品的数量,这就是我将所有商品放在表格中以便以后使用的原因在views.py
中抓取request.POST.getlist('quantity')
中的数量,并将数据传递到'Sales:checkout'
。但是在这里,我还有一个按钮可以删除购物车中的单个商品(Sales:delete_cart_item
)和一个用于清空整个购物车的按钮(Sales:empty_cart
)。
由于问题,当我按下后一个按钮时,无论它们是Sales:delete_cart_item
还是Sales:empty_cart
,它们都执行Sales:checkout
,请帮助我找出我做错了什么
来自shopping_cart.html
:
<form action="{% url 'Sales:checkout' %}" method="POST">
{% csrf_token %}
{% for item in items %}
<td>{{ item.item.item_name }}</td>
<td>
<input type="number" name="quantity" min="1" max="{{ item.item.stock_level }}">
</td>
<td>{{ item.item.id }}</td>
<td>
<a href="{% url 'Sales:delete_cart_item' item.id %}"><button>Delete row</button></a>
</td>
{% endfor %}
<form action="Sales:empty_cart" method="POST">
<button type="submit">Empty Cart</button>
</form>
<button type="submit">Continue to Secure Checkout</button>
</form>
请询问您是否需要其他详细信息,即使需要重写视图,我也愿意以任何方式解决此问题,我不一定要将所有内容都放置在表单中,这只是最近的一种我必须这样做
答案 0 :(得分:1)
这是因为两个按钮都被单击时会触发提交结帐表单。
您不应该将表单放在另一个表单中,因为任何提交按钮(即使是“内部”表单)也会导致“外部”表单被提交。
因此,我建议您将“删除项目”(及其包装链接)和“空购物车”按钮(以及后者的表单)都移出结帐表单。