我想要做的是更新已经存在的现有django cookie。我正在创建添加到购物车功能但无法在现有Cookie中添加更多项目。任何帮助都是值得称道的。 我的代码是:
def AddToCart(request):
id = request.POST.get('id')
product = Product.objects.get(pk=id)
response = render(request,'index.html')
if request.COOKIES.get('product'):
request.COOKIES['product'] = {'name':product.name,'price':product.price,'img':product.image.url}
else:
response.set_cookie('product',{'name':product.name,'price':product.price,'img':product.image.url},
max_age= 14 * 24 * 60 * 60)
return response
答案 0 :(得分:0)
使用request.COOKIES['product'] = ....
仅在当前请求上下文中设置产品值(或者可能是COOKIES dict的副本,确实不确定),因此它不会在客户端设置cookie(响应) ),在下一个请求中,它将被客户端响应(在使用request.COOKIES['product'] = ....
之前的cookie)中获取的cookie覆盖。
首先,您需要将request.COOKIES['product'] = ...
替换为response.set_cookie("product", ...)
才能更改值。
这将仅解决您的Cookie设置问题,但不会将多个产品附加到您的Cookie。
为此我建议您使用sessions
,因为它们在操作数据结构(如dicts和数组)时更容易使用,例如:在客户端cookie方法上,您需要编写自己的序列化来操作存储在cookie中的字典/数组,例如:https://stackoverflow.com/a/2383482
此外,您可以参考此答案来判断您是否需要基于cookie或数据库的会话: https://stackoverflow.com/a/18240232/4724196