示例#1
0
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")
示例#2
0
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")