Обновленное количество не отображается в представлении колбы для сеанса корзины покупок

#flask

#колба

Вопрос:

Я использую сеансы flask для хранения списка словарей для корзины покупок на Python. Когда товар добавляется в корзину, он получает словарь (добавляется в корзину). Если товар (‘prod_id’) уже существует в корзине, словарь получает обновленное количество (обновлено в корзине). Это работает нормально, но у меня возникли проблемы с отображением в корзине колбы обновленного количества продукта, когда продукт уже существует в корзине. Мне нужно только обновленное количество (для «prod_id»), чтобы оно отображалось в представлении корзины колб. Это отображается, когда я распечатываю/сбрасываю корзину сеансов. Полностью выполняемый код с дополнительными инструкциями печати. Любая помощь будет признательна.

Что я пробовал

    1. session.pop('prod_quantity', None)
    1. session.modified = True
  • Получил TypeError: pop expected at most 1 argument, got 2
    1. session.pop('prod_quantity')
    1. session.modified = True
  • Получил TypeError: 'str' object cannot be interpreted as an integer

Код на Python

 def product_exists(product: dict, cart: list):  added_id = product.get("prod_id")  in_cart = [existing_prod for existing_prod in cart if existing_prod.get("prod_id") == added_id]   if in_cart and len(in_cart) gt; 0:  return True, in_cart   return False, None   add_product = {'prod_id': 19, 'prod_name': 'Velociraptor', 'prod_price': 40, 'prod_quantity': 4} matching_product = [{'prod_id': 19, 'prod_name': 'Velociraptor', 'prod_price': 40, 'prod_quantity': 3}]  cart_products = [{'prod_id': 15, 'prod_name': 'Penguin', 'prod_price': 40, 'prod_quantity': 2}, {'prod_id': 16, 'prod_name': 'Lion', 'prod_price': 20, 'prod_quantity': 4}, {'prod_id': 17, 'prod_name': 'Whale', 'prod_price': 20, 'prod_quantity': 3}, {'prod_id': 18, 'prod_name': 'Cat', 'prod_price': 30, 'prod_quantity': 1}, {'prod_id': 19, 'prod_name': 'Velociraptor', 'prod_price': 40, 'prod_quantity': 7}]  exists, matching_product = product_exists(add_product, cart_products)  if exists: # exists = True  print(f"Matching product {matching_product}")  update_quantity = matching_product[0]['prod_quantity']   add_product['prod_quantity']  print(f"Updated quantity {update_quantity}")  add_product.update({'prod_quantity': update_quantity})  print(f"Product dict with updated quantity {add_product}")  cart_products = [add_product if product['prod_id'] == add_product['prod_id'] else product for product in cart_products]  print(f"Product dict in {cart_products}")  print(cart_products[0]["prod_quantity"])   else:  cart_products.append(add_product)  

Вид колбы

 {% for product in cart_products %}  lt;trgt;   lt;tdgt;{{ product.prod_name }}lt;/tdgt;  lt;tdgt;{{ product.prod_price }}lt;/tdgt;  lt;tdgt;{{ product.prod_quantity }}lt;/tdgt;   lt;tdgt;lt;/tdgt;  lt;/trgt;  {% endfor %}  

Ответ №1:

Оказывается, все, что мне было нужно, — это записать изменения в корзину сеансов:

session["cart"] = cart_products