我已经能够使用flask Sessions成功添加到购物篮中,但是无法计算所有产品的总价。我试图设置一个变量,该变量使用列表中的值来计算价格,但不起作用,而是返回第一个项目。有人可以指出我正确的方向。我也有一种感觉,那就是有更好的方法可以做到这一点,任何人都知道,然后他们会让我知道,因为这是我的烧瓶应用程序之一,非常有帮助,谢谢。
@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相比,Python建议变量都是小写的
svars
,而sVars
使用_
隔开,例如total_price
而不是totalPrice
并保留CamelCasing
作为类名,例如我有MenuItem
。这将使您的代码更易于其他人查看和使用。关于python - flask 购物车,我如何计算购物车中所有物品的总价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57296671/