django 从购物车中删除所有产品
django remove all products from a 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 脚本的情况下做到这一点,但我正在努力寻找一种方法。非常感谢所有帮助。
编辑:
这里是 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'),
]
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')
根据我的意见,这可能不是清空购物车的最佳方式,但它确实有效。视图如下:
def clear(request):
cart = Cart(request.session)
product = Product.objects.all()
cart.clear()
return redirect('shopping-cart-show')
我还为视图添加了 url 模式。就像我说的,它有效。有没有更好的方法让我知道。
我正在使用 [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 脚本的情况下做到这一点,但我正在努力寻找一种方法。非常感谢所有帮助。
编辑:
这里是 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'),
]
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')
根据我的意见,这可能不是清空购物车的最佳方式,但它确实有效。视图如下:
def clear(request):
cart = Cart(request.session)
product = Product.objects.all()
cart.clear()
return redirect('shopping-cart-show')
我还为视图添加了 url 模式。就像我说的,它有效。有没有更好的方法让我知道。