使用django-shopping-cart提交订单时出现'SessionStore'无'cart'属性错误
解决
'SessionStore' object has no attribute 'cart'错误 问题原因
你直接通过request.session.cart访问购物车是错误的,django-shopping-cart库不会把cart直接挂载到request.session属性上,需要通过库提供的Cart类来实例化获取购物车对象。
修正后的Views.py代码
from django_shopping_cart.cart import Cart import requests from django.shortcuts import render def postCommande(request): # 正确实例化购物车对象 cart = Cart(request) # 收集所有商品数据 products = [] for item in cart.items: # 若库版本要求调用方法则改为cart.items() product_data = { 'date': '23-09-22 00:00:00', 'nameclient': request.POST['name'], 'type': item.product.type # 替换为你商品实际的类型字段 } products.append(product_data) data = {'products': products} url = 'http://myapi/products/postCommande' requests.post(url, json=data) # 可选:提交后清空购物车 # cart.clear() return render(request, 'panier/succes.html')
关键修正点
- 导入
Cart类,通过Cart(request)获取合法的购物车实例,替代错误的request.session.cart访问方式 - 遍历购物车的
items属性(或items()方法,依库版本调整)获取商品 - 优化数据提交逻辑,一次性收集所有商品后发送API请求(若需单商品单独提交,可将请求放回循环内)
内容的提问来源于stack exchange,提问作者Khalifa
相关产品推荐
相关产品推荐

