django从购物车中删除所有商品

时间:2017-12-24 04:16:15

标签: python django python-3.x cart

我正在使用[django-carton] [1]

[1]:https://github.com/lazybird/django-carton将购物车功能添加到我的产品应用中。我可以在购物车中添加和删除产品,以及显示购物车内容。我正试图弄清楚如何清空推车。

这是views.py:

def add(request):
    cart = Cart(request.session)
    product = Product.objects.get(id=request.GET.get('id'))
    cart.add(product, price=product.price)
    return redirect('shopping-cart-show')


def remove(request):
    cart = Cart(request.session)
    product = Product.objects.get(id=request.GET.get('id'))
    cart.remove(product)
    return redirect('shopping-cart-show')


def show(request):
    return render(request, 'shopping/show-cart.html')

...以下是我在购物车页面上展示产品的方式:

 {% for item in cart.items %}
    <div class="col-md-6">
      <a href="/{{item.product.id}}/">{{ item.product }}</a>
    </div>
    <div class="col-md-2">
      <p>{{ item.quantity }}</p>
    </div>
    <div class="col-md-2">
      <p>${{ item.subtotal }}</p>
    </div>
    <div class="col-md-2">
      <a href="/shopping-cart/remove/?id={{ item.product.id }}" class="btn btn-sm btn-product">Remove</a>
    </div>
    {% endfor %}

我尝试了几种不同的方法来清理购物车。我将{{cart.clear}}分配给了一个按钮,但这也清除了刷新页面,而我只是在单击按钮时清除页面。我希望在没有Java Script的情况下这样做,但我很难找到方法。感谢所有的帮助。

修改

这是urls.py以防万一:

urlpatterns = [
    url(r'^add/$', views.add, name='shopping-cart-add'),
    url(r'^remove/$', views.remove, name='shopping-cart-remove'),
    url(r'^show/$', views.show, name='shopping-cart-show'),
]

2 个答案:

答案 0 :(得分:0)

def remove(request):
    cart = Cart(request.session)
    product = Product.objects.get(id=request.GET.get('id'))
    if cart:
        cart.delete(product)
    else:
       cart = Cart(request.session)
       cart.save()
    return redirect('shopping-cart-show')

答案 1 :(得分:0)

根据我的评论,这可能不是实现清空推车的最佳方式,但它有效。以下是观点:

def clear(request):
    cart = Cart(request.session)
    product = Product.objects.all()
    cart.clear()
    return redirect('shopping-cart-show')

我还为视图添加了一个url模式。就像我说的,它有效。 Lemme知道是否有更好的方法。