购物车总结

业务分析

  • 什么时候添加购物车记录?
当用户点击加入购物车时需要添加购物车记录
  • 什么时候需要获取购物车记录?
获取购物车数目和访问购物车页面时
  • 使用什么数据库存储?
需要频繁操作数据库,使用redis数据库可以提高效率
  • 存储格式?
一个用户的购物车记录使用一条数据保存
string,list,hash,set,zset => hash
'cart_用户id':{'商品id1':商品数目, '商品id2': 商品数目}

具体分析

  • 添加购物车

    添加购物车时页面无跳转,采用Ajax,post方法(涉及到数据的增,删,改均采用post方法,只涉及到数据的获取,采用get),
    前端需要传递的参数:商品id,商品数量

具体步骤如下:

1.判断是否登录 
  使用user对象的.is_authenticated()方法进行校验,
未登录则
2.接收数据
3.数据校验:数据是否完整,增加数量,商品是否存在
4.业务处理,添加购物车记录
  ·获取与redis连接对象
  ·根据user.id构造cart_key
  ·通过hget(cart_key, sku_id)获取sku_id的值,即原有商品数量
  如果sku_id不存在,则返回None,否则累加传入的数量
  ·校验库存,如果添加的数量小于库存,则通过
  hset(cart_key, sku_id, count)设置sku_id的值,
  如果sku_id存在,则更新,不存在则添加
  ·通过hlen(cart_key, sku_id, count)计算用户购物车商品条目
  • 购物车页面/get
    具体步骤如下:
·判断用户是否登录
·获取登录的用户,通过用户id构建cart_key
·根据cart_key通过hgetall(cart_key)获取用户购物车中商品的信息
·遍历此字典,拿到sku_id和count,通过sku_id查询数据库获取商品信息,计算商品小计和商品数量,动态给sku对象添加小计和数量属性
·没遍历一次,累加一次商品总数目和总价格,并返回给前端
  • 更新购物车商品总件数
    更新购物车记录,采用Ajax post请求,需要传递参数:商品id(sku_id),更新的商品数量(count)

与添加购物车类似,主要核心业务如下:

·是否登录
·接收数据
·检验商品数量,商品是否存在:通过sku_id查询数据库
·构建cart_key
·校验库存,通过则hset(cart_key, sku_id, count)更新数据
·计算用户购物车中商品的总种类数:
通过hvals(cart_key)获取所有值并返回列表,设置tatal_count初始为0,遍历列表进行累加
  • 删除购物车记录
    删除购物车记录,Ajax post请求,前端需要传的参数:商品id(sku_id)
    具体核心步骤如下:
·验证是否登录
·接收参数,校验sku_id是否有效,对应商品是否存在
·业务处理,删除商品
构建redis连接,通过hdel(cart_key, sku_id)进行删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完成 Python 购物车的过程中,我们需要掌握以下几个方面的知识: 1. 列表和字典的基本操作:购物车可以使用列表来存储商品,字典可以用来存储商品和价格的对应关系。 2. 输入输出的基本操作:我们需要从用户那里获得输入,然后输出结果给用户。 3. 流程控制语句:我们需要使用 if-else 语句和循环语句来实现购物车的基本逻辑。 4. 函数和模块的使用:我们可以将购物车的不同功能封装成不同的函数,并且将这些函数放在一个模块里,方便我们的调用和管理。 在掌握了以上知识后,我们可以按照以下步骤来实现一个简单的 Python 购物车: 1. 创建一个空的购物车列表和一个空的商品字典。 2. 输出菜单,让用户选择要进行的操作(添加商品、删除商品、显示购物车、结算)。 3. 根据用户选择的操作,调用相应的函数来实现相应的功能。 4. 如果用户选择了结算,计算购物车中商品的总价并输出结果。 5. 退出程序。 以下是一个简单的购物车示例代码,以供参考: ```python # shopping_cart.py # 商品字典 goods = { "apple": 3.5, "banana": 2.8, "orange": 4.0, "watermelon": 6.0, "pear": 3.2 } # 购物车 cart = [] # 添加商品 def add_goods(): name = input("请输入商品名称:") if name in goods: cart.append(name) print("商品添加成功!") else: print("该商品不存在!") # 删除商品 def delete_goods(): name = input("请输入要删除的商品名称:") if name in cart: cart.remove(name) print("商品删除成功!") else: print("购物车中不存在该商品!") # 显示购物车 def show_cart(): if len(cart) == 0: print("购物车为空!") else: print("购物车中的商品有:") for name in cart: print(name) # 结算购物车 def checkout(): if len(cart) == 0: print("购物车为空!") else: total_price = 0 for name in cart: total_price += goods[name] print("您购买的商品总价为:%.2f 元" % total_price) # 输出菜单 def show_menu(): print("欢迎使用购物车程序!") print("1. 添加商品") print("2. 删除商品") print("3. 显示购物车") print("4. 结算") print("5. 退出程序") # 主函数 def main(): while True: show_menu() choice = input("请输入要进行的操作:") if choice == "1": add_goods() elif choice == "2": delete_goods() elif choice == "3": show_cart() elif choice == "4": checkout() elif choice == "5": print("感谢使用购物车程序,下次再见!") break else: print("输入有误,请重新输入!") if __name__ == "__main__": main() ``` 希望这个购物车示例能够帮助你理解 Python 的基本语法和编程思想!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值