购物车,如何计算购物车中所有商品的总价
Shopping cart, how can I caclulate the total price of all the items in my cart
我已经能够使用 flask Sessions 成功地添加到购物车中,但是我在计算所有产品的总价时遇到了问题。我试图设置一个变量,该变量使用列表中的值来计算价格,但这不起作用,而是 returns 第一项。有人能给我指出正确的方向吗?
@app.route("/Menu")
def menu():
MenuItems = Menu.query.all()
return render_template("menu.html", MenuItems=MenuItems)
@app.route("/AddToCart", methods=["POST", "GET"])
def addToCart():
itemId = int(request.form.get("productId"))
MenuItem = Menu.query.get(itemId)
if MenuItem is None:
return render_template("error.html", errorMessage="There has been an issue adding this item to your basket")
sVars = session['cart']
sVars.append([str(MenuItem.ItemName), float(MenuItem.ItemPrice)])
session['cart'] = sVars
allPrices = sum(sVars[1])
return render_template("cart.html", cartSession=session['cart'], allPrices=allPrices)
所以,您得到的列表如下所示:
sVars = [
['apple', 2.12],
['orange', 3.13],
]
我们只需要每个列表的第二个元素的列表,这样我们就可以 sum([2.12, 3.13])
并得到我们的结果。一个巧妙的方法是使用列表理解:
total_price = sum([x[1] for x in sVars])
print(total_price)
哪种方式(以我的拙见)更简洁:
total_price = 0
for entry in sVars:
total_price += entry[1]
print(total_price)
作为次要说明——通常 Python 建议您的变量全部小写 svars
而不是 sVars
使用 _
作为间距 total_price
而不是然后 totalPrice
并为 class 名称保留 CamelCasing
,就像 MenuItem
一样。它会让您的代码更容易被其他人查看和使用。
我已经能够使用 flask Sessions 成功地添加到购物车中,但是我在计算所有产品的总价时遇到了问题。我试图设置一个变量,该变量使用列表中的值来计算价格,但这不起作用,而是 returns 第一项。有人能给我指出正确的方向吗?
@app.route("/Menu")
def menu():
MenuItems = Menu.query.all()
return render_template("menu.html", MenuItems=MenuItems)
@app.route("/AddToCart", methods=["POST", "GET"])
def addToCart():
itemId = int(request.form.get("productId"))
MenuItem = Menu.query.get(itemId)
if MenuItem is None:
return render_template("error.html", errorMessage="There has been an issue adding this item to your basket")
sVars = session['cart']
sVars.append([str(MenuItem.ItemName), float(MenuItem.ItemPrice)])
session['cart'] = sVars
allPrices = sum(sVars[1])
return render_template("cart.html", cartSession=session['cart'], allPrices=allPrices)
所以,您得到的列表如下所示:
sVars = [
['apple', 2.12],
['orange', 3.13],
]
我们只需要每个列表的第二个元素的列表,这样我们就可以 sum([2.12, 3.13])
并得到我们的结果。一个巧妙的方法是使用列表理解:
total_price = sum([x[1] for x in sVars])
print(total_price)
哪种方式(以我的拙见)更简洁:
total_price = 0
for entry in sVars:
total_price += entry[1]
print(total_price)
作为次要说明——通常 Python 建议您的变量全部小写 svars
而不是 sVars
使用 _
作为间距 total_price
而不是然后 totalPrice
并为 class 名称保留 CamelCasing
,就像 MenuItem
一样。它会让您的代码更容易被其他人查看和使用。