У объекта 'WSGIRequest' нет атрибута 'get' django 5.1.4

hey guys im new to django and in my first project i trying to save the cart of a visitor in session. когда я пытаюсь добавить некоторый продукт в корзину сессии, у меня возникает ошибка < WSGIRequest object has no attribute 'get'

я использую класс для корзины в моем проекте и в init я проверяю, существует ли 'cart' в сессии или нет, затем создаю ключ для 'cart' вот так :

в классе Cart:

class Cart:
    def __init__(self, request):
        """
        Initialize The Cart
        """
        self.request = request
        self.session = request.session
        cart = self.session.get('cart')
        if not cart:
            cart = self.session['cart'] = {}
        self.cart = cart
        
    # add a product to session cart:
    def add(self, product, quantity=1):
        """
        Add The Specified Product To The Cart If Exists
        """
        product_id = str(product.id)
        if product_id not in self.cart:
            self.cart[product_id] = {'quantity': quantity}
        else:
            self.cart[product_id]['quantity'] += quantity
            self.save()

Я также использую другой способ для проверки существования 'cart' в сессии:

        if 'cart' not in request.session:
            self.cart = self.session['cart'] = {}

и все та же проблема...

Форма для использования корзины:

class AddToCartProductForm(forms.Form):
    QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 30)]
    quantity = forms.TypedChoiceField(choices=QUANTITY_CHOICES, coerce=int, label=_('Quantity'))

view:

def add_to_cart_view(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = AddToCartProductForm(request)

    if form.is_valid():
        cleaned_data = form.cleaned_data
        quantity = cleaned_data['quantity']
        cart.add(product, quantity)

    return redirect('cart:cart-detail')

urls file:

urlpatterns = [
    path('', views.cart_detail_view, name='cart-detail'),
    path('add/<int:product_id>', views.add_to_cart_view, name='add-to-cart')
]

в html-файле:

 <form action="{% url 'cart:add-to-cart' product.id %}" method="post">
         {% csrf_token %}
         {{ add_to_cart_form|crispy }}
         <button type="submit" class="btn btn-small btn-bg-red btn-color-white btn-hover-2">
                                        {% trans 'Add To Card' %}
                                    </button>
 </form>

и когда я нажимаю на кнопку добавления в корзину, появляется эта ошибка: ' WSGIRequest' object has no attribute 'get' Я думаю, что ошибка возникает из-за метода init в Cart, где я проверяю существующие 'cart' в сессии, как я могу это исправить?

Проблема возникла из-за этой строки:form = AddToCartProductForm(request) Вместо нее надо было написать вот это : form = AddToCartProductForm(request.**POST**)

Мне нужно было взять POST из запроса и передать его классу AddToCartProductForm.

В любом случае, спасибо.

Вернуться на верх