python - 如何在 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 美元的袜子。
解决方案
您每次都通过以下方式重置购物车:
request.session['cart'] = {}
如果已经有一个字典,您可以防止创建新字典,方法是使用
request.session.set_default('cart', {})
我们甚至可以在这里链接命令,并将项目添加到一行中,例如:
request.session.set_default('cart', {})[str(product.id)] = product_document
推荐阅读
- reactjs - 如何在 React 中加密我的 ag-grid 企业许可证?
- python - 如何向量化这个操作
- amazon-web-services - Maven using local spark library
- java - 通过文本文件读取货币金额并计算票据面额
- sql-server - Extract and Separate Numeric
- google-cloud-firestore - How to use information returned from Google Authentication provider to provide access to data
- java - How do you create multithreading function in java?
- python - AttributeError: 'numpy.ndarray' object has no attribute 'predict'
- google-apps-script - getActiveUser() 不返回用户?
- angular - 如何使用 summaryFunc/summaryTemplate 格式化 ngx-datatable 中的汇总值?