Flask 在 Session 中更新产品数量
Flask update product quantity in Session
我正在尝试使用 Flask 创建一个小型电子商务商店。除了购物车阶段,一切都进展顺利。我希望应用程序增加购物车中的产品数量,而不是两次添加相同的产品。
比如我点击“加入购物车”两次,session中保存的数据是这样的:
[{'product': '5', 'quantity': 1}]
[{'product': '5', 'quantity': 1}]
我希望将其保存为:
[{'product': '5', 'quantity': 2}]
这是我当前的代码:
@app.route('/item/<id>', methods=['POST', 'GET'])
def item_page(id):
form = add_to_cart()
if form.validate_on_submit():
if 'cart' in session:
session['cart'].append({'id' : form.id.data, 'quantity' : form.quantity.data})
session.modified = True
return render_template('product.html', form=form)
我发现这里回答了一个类似的问题,但解决方案对我不起作用:
Flask python where should I put goods that go to cart in online shop?
您正在追加到列表中,因此您总是在创建新行。
您需要检查该产品是否已存在于购物车的商品列表中,如果存在,则增加数量。类似(这是非常粗糙的代码)
# Get a temporary reference to the session cart, just to reduce the name of the variable we will use subsequently
cart = session["cart"]
# This flag will be used to track if the item exists or not
itemExists = False
# Iterate over the cart contents and check if the id already exists
for index, value in enumerate(cart):
if value["id"] == form.id.data:
cart[index]["quantity"] = cart[index]["quantity"] + form.quantity.data
itemExists = True
break # exit the for loop
# if the item does not exist, then you create a new row
if not itemExists:
cart.append({'id' : form.id.data, 'quantity' : form.quantity.data})
# Save the temp cart back into session
session["cart"] = cart
我正在尝试使用 Flask 创建一个小型电子商务商店。除了购物车阶段,一切都进展顺利。我希望应用程序增加购物车中的产品数量,而不是两次添加相同的产品。
比如我点击“加入购物车”两次,session中保存的数据是这样的:
[{'product': '5', 'quantity': 1}]
[{'product': '5', 'quantity': 1}]
我希望将其保存为:
[{'product': '5', 'quantity': 2}]
这是我当前的代码:
@app.route('/item/<id>', methods=['POST', 'GET'])
def item_page(id):
form = add_to_cart()
if form.validate_on_submit():
if 'cart' in session:
session['cart'].append({'id' : form.id.data, 'quantity' : form.quantity.data})
session.modified = True
return render_template('product.html', form=form)
我发现这里回答了一个类似的问题,但解决方案对我不起作用: Flask python where should I put goods that go to cart in online shop?
您正在追加到列表中,因此您总是在创建新行。
您需要检查该产品是否已存在于购物车的商品列表中,如果存在,则增加数量。类似(这是非常粗糙的代码)
# Get a temporary reference to the session cart, just to reduce the name of the variable we will use subsequently
cart = session["cart"]
# This flag will be used to track if the item exists or not
itemExists = False
# Iterate over the cart contents and check if the id already exists
for index, value in enumerate(cart):
if value["id"] == form.id.data:
cart[index]["quantity"] = cart[index]["quantity"] + form.quantity.data
itemExists = True
break # exit the for loop
# if the item does not exist, then you create a new row
if not itemExists:
cart.append({'id' : form.id.data, 'quantity' : form.quantity.data})
# Save the temp cart back into session
session["cart"] = cart