Django现有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

我试图做的是更新已经存在的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

使用
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。干杯。向上投票。