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

Django开发购物车报错:WSGIRequest对象无session_key属性如何解决

问题排查及解决方案

你代码里存在3处核心错误,对应修复方案如下:

1. Session Key 读取、创建逻辑错误

你代码中request.session_key是错误用法,Django的Session Key存放于request.session对象下,正确读取属性为request.session.session_key;同时request.session.create()方法无返回值,直接赋值会导致cart_id存储为None,进而引发后续查询异常。

修复_cart_id函数:

def _cart_id(request):
    cart = request.session.session_key
    if not cart:
        # 给session设置任意值触发自动创建,避免直接调用create无返回值
        request.session['cart_init_flag'] = True
        cart = request.session.session_key
    return cart

2. 模型查询管理器拼写错误

你代码中CartItem.object.get调用了单数的object,Django模型默认的查询管理器是复数形式objects,拼写错误会直接抛出属性不存在的异常。

修复对应代码行:

# 原错误写法:cart_item = CartItem.object.get(product = prod,cart = cart)
# 修复后:
cart_item = CartItem.objects.get(product = prod,cart = cart)

3. 购物车数量累加逻辑错误

你代码中cart_item.quantity += cart_item.quantity会导致每次添加商品时数量直接翻倍,不符合常规购物车「添加一次数量+1」的逻辑,调整后需要主动调用save()保存修改:

# 原错误逻辑:cart_item.quantity += cart_item.quantity
# 修复为:
cart_item.quantity += 1
cart_item.save()

额外校验项

如果修复后仍有异常,请检查:

  • 确认django.contrib.sessions.middleware.SessionMiddleware已经添加到settings.py的MIDDLEWARE列表中(仅配置INSTALLED_APPS不生效,必须同时开启Session中间件)
  • 确认对应视图没有添加@csrf_exempt等会跳过Session处理的装饰器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:57:03