Django:html格式的网址无法正常工作

时间:2018-12-01 22:21:14

标签: python html django forms templates

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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