如何在django会话中存储多个变量

时间:2019-05-01 19:23:26

标签: python django session

我正在尝试在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美元的袜子。

1 个答案:

答案 0 :(得分:1)

您每次通过以下方式重置购物车:

request.session['cart'] = {}

您可以使用

阻止创建新字典(如果已有的话)
request.session.set_default('cart', {})

我们甚至可以在此处链接命令,并将其添加到一行中,例如:

request.session.set_default('cart', {})[str(product.id)] = product_document