Django现有cookie未更新
我试图做的是更新已经存在的django cookie。我正在创建“添加到购物车”功能,但无法在现有cookie中添加更多项目。任何帮助都是值得称赞的。 我的代码是:Django现有cookie未更新,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我试图做的是更新已经存在的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
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
使用
request.COOKIES['product']=..
仅在当前请求上下文中设置产品值(或者可能是COOKIES dict的副本,不确定是否真的),因此它不会在客户端(响应)设置cookie,并且在下一个请求中,它将被从客户端响应获取的cookie覆盖(这是使用request.COOKIES['product']=..
之前的cookie)
因此,首先需要将:request.COOKIES['product']=…
替换为response.set_cookie(“product”,…)
,以更改值
这只会解决cookie设置问题,但不会将多个产品附加到cookie中
为此,我建议您改用会话
,因为在操作dict和数组等数据结构时,它们更容易使用,例如:在客户端cookie方法中,您需要编写自己的序列化来操作存储在cookie中的dict/数组,例如:
此外,您还可以参考此答案来判断是否需要基于cookie或db的会话:
非常感谢。在这种情况下,我需要使用session。干杯。向上投票。