0

我正在建立电子商务网站,我有一个带有商品的购物车模型,我希望客户选择他们想要购买的某个商品的数量,这就是我将所有内容放在表格中以便稍后获取数量的原因在views.pybyrequest.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>

请询问您是否需要更多详细信息,即使可能需要重写视图,我也愿意以任何方式解决此问题,我不一定要将所有内容都放在表单中,这只是我最接近的正在做

4

1 回答 1

1

这是因为您的两个按钮在单击时都会触发提交结帐表单。

您不应该将一个表单放在另一个表单中,因为任何提交按钮,即使在“内部”表单中,也会导致“外部”表单被提交。

因此,我建议您将“删除项目”(连同其包装链接)和“空购物车”按钮(连同后者的表单)移到结帐表单之外。

于 2018-12-01T22:32:51.517 回答