Python 如何将Django视图更改为Django rest框架视图?

Python 如何将Django视图更改为Django rest框架视图?,python,python-3.x,django,django-rest-framework,Python,Python 3.x,Django,Django Rest Framework,您好,我正在编写一个购物车,我编写了cars会话,但我无法编写视图。我搜索并找到了一个包含视图的代码,但它是针对django和表单的。您能帮我将视图更改为django rest框架吗???实际上,我的问题是视图中的cart_add函数 这是密码 #推车 #views.py 也许你可以详细说明你想要实现什么?你想创建一个API还是你想实现什么?我想要一个购物车。客户想要购买的产品首先进入购物车,客户可以继续购物和选择产品,并添加或删除某些产品。最后,订单将是购物车中的每件物品。我不确定这是否是实现

您好,我正在编写一个购物车,我编写了cars会话,但我无法编写视图。我搜索并找到了一个包含视图的代码,但它是针对django和表单的。您能帮我将视图更改为django rest框架吗???实际上,我的问题是视图中的cart_add函数 这是密码

#推车

#views.py


也许你可以详细说明你想要实现什么?你想创建一个API还是你想实现什么?我想要一个购物车。客户想要购买的产品首先进入购物车,客户可以继续购物和选择产品,并添加或删除某些产品。最后,订单将是购物车中的每件物品。我不确定这是否是实现购物车的最佳方式。考虑使用基于JavaScript、jQuery或ReAcjs的前端语言,这取决于您精通的语言。
CART_SESSION_ID = 'cart'


class Cart:
    def __init__(self, request):
        self.session = request.session
        cart = self.session.get(CART_SESSION_ID)
        if not cart:
            cart = self.session[CART_SESSION_ID] = {}
        self.cart = cart

    def __iter__(self):
        product_ids = self.cart.keys()
        products = Product.objects.filter(id__in=product_ids)
        cart = self.cart.copy()
        for product in products:
            cart[str(product.id)]['product'] = product

        for item in cart.values():
            item['total_price'] = int(item['price']) * item['quantity']
            yield item

    def remove(self, product):
        product_id = str(product.id)
        if product_id in self.cart:
            del self.cart[product_id]
            self.save()

    def add(self, product, quantity):
        product_id = str(product.id)

        if product_id not in self.cart:
            self.cart[product_id] = {'quantity': 0, 'price': str(product.price)}
        self.cart[product_id]['quantity'] += quantity
        self.save()

    def save(self):
        self.session.modified = True

    def get_total_price(self):
        return sum(int(item['price']) * item['quantity'] for item in self.cart.values())

    def clear(self):
        del self.session[CART_SESSION_ID]
        self.save()
def detail(request):
    cart = Cart(request)
    return render(request, 'cart/detail.html', {'cart':cart})

@require_POST
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product, quantity=cd['quantity'])
    return redirect('cart:detail')

def cart_remove(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    cart.remove(product)
    return redirect('cart:detail')