我正在为我的项目创建一个购物车。我创建了购物车,但是我得到了一些帮助来编写它的视图,但是他们给了我Django视图,而不是Django rest框架。我正在创建django rest api。我不知道如何将函数更改为rest框架,代码中有表单,但在django rest框架中,我们不创建表单。你能帮我更改视图的功能吗???实际上,我的问题在于views.py中的cart_add函数
#手推车
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()
views.py
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')
目前没有回答
相关问题 更多 >
编程相关推荐