Django访问购物车添加接口报错:add()收到意外关键字参数override_quantity
报错原因
这个错误是你调用Cart类的add()方法时传入了override_quantity关键字参数,但你定义Cart类的add()方法时没有声明接收这个参数导致的。
从你提供的代码可以看到,在views.py的cart_add视图中,你写的调用代码为:
cart.add(product=product, quantity=cd['quantity'], override_quantity=cd['override'])
你在这里传入了三个参数,但你实现的Cart类add方法只接收product、quantity两个参数,没有预留override_quantity的参数位置,因此Python会抛出参数不匹配的错误。
解决方案
你可以根据自己的业务需求选择以下任意一种方式修复:
方案1:修改Cart类的add方法,新增override_quantity参数
找到你定义Cart类的文件(通常是cart应用下的cart.py),修改add方法的定义,添加对应参数以及相关业务逻辑:
# 原add方法定义类似: # def add(self, product, quantity): # 修改为以下形式,根据业务需要设置默认值 def add(self, product, quantity, override_quantity=False): # 原有逻辑保持不变,新增override_quantity的处理逻辑即可 # 示例逻辑:override_quantity为True则直接覆盖商品原有数量,否则累加数量 if override_quantity: self.cart[product.id]['quantity'] = quantity else: self.cart[product.id]['quantity'] += quantity
方案2:删除调用时传入的多余参数
如果你暂时不需要覆盖商品数量的功能,直接修改views.py里的调用代码,去掉多余的override_quantity参数即可:
# 修改后的调用代码 cart.add(product=product, quantity=cd['quantity'])
内容的提问来源于stack exchange,提问作者Amirhossein
相关产品推荐
相关产品推荐

