这让我疯狂。我正在建立一个电子商务应用,购物车在Django-carton。当我将商品添加到购物车时,我可以将商品的ID从上下文中获取到商店中,并在客户通过点击按钮添加商品时将其传递到我的Ajax调用和视图中。用Ajax从django-carton中删除项目
我希望客户能够使用按钮删除和编辑购物车中的数量,并且现在正在尝试创建我的删除和编辑数量功能。我卡住了,因为我不明白如何在Ajax中传递视图的id。该id不在项目上下文对象中。我可以通过打印ids = request.session['CART']
获得视图中的ID,但它没有当前的ID。在上下文中的项目仅限于以下情况:
self.product = product
self.quantity = int(quantity)
self.price = Decimal(str(price))
Django的纸箱的文档中的例子有这个例子,它不使用JavaScript:
观点:
def remove(request):
cart = Cart(request.session)
product = Product.objects.get(id=request.GET.get('id'))
cart.remove(product)
return HttpResponse("Removed")
网址:
u`rl(r'^remove/$', 'remove', name='shopping-cart-remove'),`
在我看来,我可以得到购物车中所有物品的ID与
cart = Cart(request.session)
ids = request.session['CART']
这给了我下面的对象:
{u'meal_pk': 15, u'price': u'5', u'quantity': 39}
但这实际上并没有显得有帮助。这是我第一次见面。我一直在阅读代码https://github.com/lazybird/django-carton/blob/master/carton/cart.py
如何编辑或删除购物车中的物品?
原谅可能是愚蠢的问题 - 与会话我可以在JS编辑,并在所有不使用我的意见?我很困惑这是如何工作的。 – fstopzero
只能通过后端访问会话,因此您必须创建视图/端点来更新或检索会话变量。以上情况发生了什么:单击项目的删除按钮时,使用JQuery对Django视图'remove'进行Ajax调用。 Django反过来执行视图,从会话中删除项目。从那里,你可以包含代码来删除客户端通过JS查看的页面上的项目。如果您从购物车中移除某件商品,然后再次调用购物车视图,则该商品不会显示。 –