You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask开发电商时Session购物车相同商品重复新增如何改为数量叠加

代码修改方案

当前代码未校验购物车中是否已存在同款商品,每次提交均直接追加新条目,修改时先遍历购物车匹配商品ID,匹配成功则累加数量,匹配失败再新增条目,同时补充购物车未初始化时的创建逻辑即可。

@app.route('/item/<id>', methods=['POST', 'GET'])
def item_page(id):
    form = add_to_cart()
    if form.validate_on_submit():
        # 统一转换数据类型,避免字符串/数字类型不匹配导致匹配失败
        target_product_id = str(form.id.data)
        add_quantity = int(form.quantity.data)
        # 购物车未初始化时先创建空列表
        if 'cart' not in session:
            session['cart'] = []
        
        product_existed = False
        # 遍历现有购物车匹配商品ID
        for item in session['cart']:
            if str(item['id']) == target_product_id:
                item['quantity'] += add_quantity
                product_existed = True
                break
        
        # 无同款商品时新增条目
        if not product_existed:
            session['cart'].append({'id': target_product_id, 'quantity': add_quantity})
        
        # 标记session已修改,确保修改生效
        session.modified = True
    return render_template('product.html', form=form)

核心修改点说明

  • 补充了购物车初始化逻辑,解决首次添加商品时session无cart字段导致的添加失败问题
  • 新增商品ID匹配逻辑,匹配到已存在的商品时直接累加对应数量,不会生成重复条目
  • 统一转换商品ID为字符串类型,避免表单提交的字符串ID和session中存储的数字ID匹配失败的问题
  • 统一设置session.modified标记,Flask默认不会检测session内部可变对象的修改,手动设置可确保修改被正常同步。

内容的提问来源于stack exchange,提问作者whitetshirt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:24:03