0

我想要做的是更新現有的已存在的django cookie。我正在創建一個添加到購物車功能,但無法在現有Cookie中添加更多項目。任何幫助都可以稱讚。 我的代碼是:Django現有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

使用request.COOKIES['product'] = ....套僅在當前請求上下文的產品價值(或者一個餅乾字典的副本,不知道真的),所以不會設置客戶機上的Cookie (響應),並且在下一個請求中,它將被從客戶端響應中獲得的cookie覆蓋(這是在使用request.COOKIES['product'] = ....之前的cookie)。

因此,首先您需要用response.set_cookie("product", ...)替換:request.COOKIES['product'] = ...以更改值。

這將只解決您的Cookie設置問題,但不會將多個產品附加到您的Cookie。

爲此,我建議您使用sessions來替代,因爲它們在處理數據結構(如字典和數組)時更易於使用,例如:在客戶端Cookie方法中,您需要編寫自己的序列化操作存儲在cookie中的字典/陣列,例如這裏:https://stackoverflow.com/a/2383482

您也可以參考這個答案告訴你,如果需要的cookie或基於數據庫會話: https://stackoverflow.com/a/18240232/4724196

+1

非常感謝你。我需要爲這種情況使用會話。乾杯。 Upvoted。 –