我正在尝试在Django中创建一个不依赖于用户帐户的购物车。我正在使用django会话。我遇到的问题是,当我尝试向会话中添加新项目并打印出会话中的项目列表时,只会打印出最新的项目,而不是会话中的整个项目列表。
def add_to_cart(request,pk,slug):
product = get_object_or_404( Product, pk=pk,)
product_document = {
'title': product.title,
'price': product.price,
}
request.session['cart'][str(product.id)] = product_document
print(request.session['cart'])
return render(request,'selling/cart.html')
所以可以说,我先花400美元买鞋,然后再花10美元买袜子,当我打印会话时,而不是把这两个项目都放在字典中,只打印了10美元的袜子。
答案 0 :(得分:1)
您每次通过以下方式重置购物车:
request.session['cart'] = {}
您可以使用
阻止创建新字典(如果已有的话)request.session.set_default('cart', {})
我们甚至可以在此处链接命令,并将其添加到一行中,例如:
request.session.set_default('cart', {})[str(product.id)] = product_document