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

Django购物车Session问题:无法正确回显添加的商品信息

问题分析与修复方案

你的问题核心是Session存储结构和模板渲染逻辑不匹配:

  • 你把商品名称、价格分别存在request.session['nom']和request.session['prix']两个独立键中,它们的值都是单个字符串/数字,并非包含nom和prix的完整对象
  • 模板循环request.session.items时,每个value都是单个值,自然找不到value.nom和value.prix,导致内容为空

修复步骤

1. 修改视图函数cart_add

将选中的完整商品对象存入Session(以下先针对单商品场景修复,多商品场景附在后面):

def cart_add(request, code):
    dico={'produits':[{'code':'2BG12','nom':'banane sucré','prix':1500}, 
    {'code':'MLO23','nom':'pomme de terre','prix':1800}]}
    mes_produits=dico['produits']
    selected_product = next((item for item in mes_produits if item["code"] == code), None)
    if selected_product:
        # 把完整商品对象存入session的单个键中
        request.session['cart_item'] = selected_product
    # 处理商品不存在的情况,避免KeyError
    context = {'cart_item': request.session.get('cart_item', {})}
    return render(request, 'cart/cart_detail.html', context)

2. 修改cart_detail.html模板

直接渲染Session中存储的完整商品对象,无需循环整个Session:

{% if cart_item %}
    Nom : {{ cart_item.nom }}  
    Prix : {{ cart_item.prix }}
{% else %}
    购物车为空
{% endif %}

可选:多商品购物车适配

如果需要支持添加多个商品,可将Session改为列表结构存储:

def cart_add(request, code):
    dico={'produits':[{'code':'2BG12','nom':'banane sucré','prix':1500}, 
    {'code':'MLO23','nom':'pomme de terre','prix':1800}]}
    mes_produits=dico['produits']
    selected_product = next((item for item in mes_produits if item["code"] == code), None)
    if selected_product:
        # 从session获取购物车列表,不存在则初始化空列表
        cart = request.session.get('cart', [])
        # 可选:避免重复添加同一件商品
        if not any(item['code'] == code for item in cart):
            cart.append(selected_product)
        request.session['cart'] = cart
    context = {'cart': request.session.get('cart', [])}
    return render(request, 'cart/cart_detail.html', context)

对应多商品模板:

{% if cart %}
    {% for item in cart %}
        Nom : {{ item.nom }}  
        Prix : {{ item.prix }}<br>
    {% endfor %}
{% else %}
    购物车为空
{% endif %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:30:55