0

То, что я пытаюсь сделать, это обновить существующий файл cookie django, который уже существует. Я создаю функциональность добавления в корзину, но не могу добавить больше элементов в существующий файл cookie. Любая помощь будет хвалить. Мой код:Django existing 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 до использования request.COOKIES['product'] = ....).

Итак, сначала вам нужно заменить: request.COOKIES['product'] = ... на response.set_cookie("product", ...) на значение, которое необходимо изменить.

Это решит проблему с настройками cookie, но не добавит несколько продуктов в ваш файл cookie.

Для этого я предлагаю вместо этого использовать sessions, поскольку они проще использовать, когда дело доходит до манипулирования структурами данных, такими как диктофоны и массивы, например, например, при использовании cookie на стороне клиента вам необходимо написать собственную сериализацию, чтобы манипулировать Dict/массив, хранящийся в куки, пример здесь: https://stackoverflow.com/a/2383482

Также вы можете обратиться к этому ответу, чтобы сказать, если вам нужно печенье или БД на основе сеансов: https://stackoverflow.com/a/18240232/4724196

+1

большое спасибо. Мне нужно использовать сеанс для этой ситуации. веселит. Upvoted. –

Смежные вопросы