首页 > 解决方案 > 如何在 django 会话中存储多个变量

问题描述

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

标签: pythondjangosession

解决方案


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

request.session['cart'] = {}

如果已经有一个字典,您可以防止创建新字典,方法是使用

request.session.set_default('cart', {})

我们甚至可以在这里链接命令,并将项目添加到一行中,例如:

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

推荐阅读