def delete_from_cart(request, id): """ Функция удаляет айди товара со списка ( корзины) :param request: :param id: :return: """ cart = request.session.get('cart', []) product = Product.get_or_none(id) if product is None: # если такого продукта нет в БД, то возвращаем такой json return HttpResponse(json.dumps( {"error": f"Product with such id={id} doesn't exist"}), content_type="application/json") elif id in cart: # если айди в корзине cart.remove(id) # удялем с корзины request.session['cart'] = cart # присваиваем новое значение корзине return redirect('cart') # редирект на страницу с корзиной else: # если такого айди нет в корзине, то возвращаем такой json # по сути, если продукта нет в корзине, то он не отображается на странице # то-есть его можно удалить только отправив get запрос на api # и только в этом случае сработает этот if return HttpResponse(json.dumps({"removed": 0}), content_type="application/json")
def add_to_cart(request): id = request.GET.get('id') # достаем айди продукта с реквеста cart = request.session.get('cart', []) product = Product.get_or_none(id) if product is None: # если записи нет в бд return HttpResponse(json.dumps( {"error": f"Product with such id={id} doesn't exist"}), content_type="application/json", status=400) elif product.id in cart: # если продукт уже в корзине return HttpResponse(json.dumps({"added": 0}), content_type="application/json", status=400) else: # если продукта нет в корзине, то добавляем cart.append(product.id) request.session['cart'] = cart # переписываем корзину # status 200, ajax - success return HttpResponse(json.dumps({"added": 1}), content_type="application/json")