Я следую учебному пособию, в котором сделана корзина для обработки товаров.Это функция для добавления товаров в корзину как
@require_POST
def cart_add(request, product_id):
cart = Cart(request)
product = get_object_or_404(Product, id=product_id)
form = CartAddProductForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
cart.add(product=product, quantity=cd['quantity'], update_quantity=cd['update'])
return redirect('cart:cart_detail')
, а вторая -
def product_detail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug, available=True)
cart_product_form = CartAddProductForm()
return render(request,'shop/product/detail.html' {'product':product,'cart_product_form': cart_product_form})
Как я могу изменить эти два кода в ClassBasedViews?Что будет лучше?используя те же функции на основе представлений или ClasBased?
from django import forms
PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 21)]
class CartAddProductForm(forms.Form):
quantity = forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES, coerce=int)
update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)
это forms.py
в CartApp.У корзины есть класс с именем Cart
, который требует request,Product
из формы.Как я могу передать эту информацию в корзину, используя CBV?