【问题标题】:How to store multiple variables in a django session如何在 django 会话中存储多个变量
【发布时间】:2019-05-02 04:04:52
【问题描述】:

我正在尝试在 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'] = {}
  • 谢谢这是问题

标签: python django session


【解决方案1】:

您每次重置购物车时都写:

request.session['cart'] = {}

如果已经有一个新字典,您可以使用

来阻止创建新字典
request.session<b>.set_default('cart', {})</b>

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

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

【讨论】:

  • 但是现在字典不允许我存储两个以上的项目。你知道为什么吗?
  • @Osaro:您打算添加的第三个产品是否具有相同的 id?毕竟字典只能将一个值与给定的键相关联。也许您应该重新考虑如何在会话中存储项目,因为现在它至少会导致一些问题。
  • 不,他们没有相同的密钥。所有产品都有自己的唯一密钥。
  • 这正是我得到的:{'67': {'title': 'hellothere', 'price': '120'}, '68': {'title': ' Morris', 'price': '234'}} 如果我添加新产品,组合可能会发生变化,但字典中的产品不会超过 2 个。
  • @Osaro:是的,我的意思是您将 same 产品两次添加到图表中。通常字典可以存储任意数量的元素。尽管当然可能还有其他“操作”字典的功能。
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 2020-03-12
  • 2014-09-20
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多