当前位置: 首页 > 后端技术 > Python

Django电商网站--购物车设计

时间:2023-03-26 18:43:54 Python

1.因为购物车是高频刷新部分,对数据关系结构要求不是很复杂,所以选择nosql作为存储工具;2、前后端需要连接4个参数,分别是用户id,商品编码为sku_id,商品数量,是否勾选;3、Redis有5种数据类型,分别是string、list、hash、set、zset。但是这次4个参数的数量超出了单个数据结构的控制范围,所以选择了2个数据结构共同维护;4、Userid、skuid和count采用hash结构,即:cart_user_id:{sku_id1:count,sku_id2:count,sku_id3:count....}5、Userid和selectedproducts是set维护的,因为shoppingcart不需要顺序,set结构可以自动去重,select_user_id:[sku_id1,sku_id3....]6.后期维护购物车数据时,两张表同时进行。例如删除hash中的sku_id1时,选中的也要同时删除。7、每次添加一个商品到hash中,先遍历购物车中的商品是否已经存在,如果存在则累加计数,如果不存在则添加新的。使用hincrby函数8.进入结算页面时,已勾选的商品已结算,所以需要将Redis的两张表结合起来构造字典为new_cart_dict={sku_id:count}9.遍历select_user_id,遍历出sku_id是新表的key,然后用这个key在cart_user_id表中查询同一个sku_id,然后把它的count赋给新表。new_cart_dict={}forselected_sku_idinselect_user_id:new_cart_dict[int(selected_sku_id)]=int(cart_user_id[sku_id])10.然后进入订单提交页面,即从new_cart_dict中提取选中的商品信息和数量,然后响应前端页面。另外根据request.user找到用户没有删除的地址,一起响应给前端。11、另外需要响应给前端的数据通常包括总件数、总价、运费、总价等,通过context={'addresses':'','skus':'','total_count':'','total_amount':'','freight':''}结构实现