У объекта '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.
В любом случае, спасибо.