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

Posted 王伟路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django电商网站--购物车设计相关的知识,希望对你有一定的参考价值。

1、购物车因为是高频刷新部分,同时对数据关系结构的要求并非很复杂,因此选取nosql作为存储工具;
2、前后端需要对接4个参数,分别是用户id,商品编码即sku_id,多少件商品count以及是否勾选 selected;
3、Redis有5种数据类型,分别为string、list、hash、set、zset。而本次的4个参数,数量超过了单一种数据结构的控制范围,因此选用2个数据结构进行共同维护;
4、用户id,skuid以及count采用hash结构,即:
cart_user_id:{sku_id1:count,sku_id2:count,sku_id3:count....}
5、用户id和选中的商品使用set维护,因为购物车不要求先后顺序,且set结构可自动去重,
select_user_id:[sku_id1,sku_id3.....]
6、后期维护购物车数据时,2个表同时进行,例如删掉hash里面sku_id1的时候,selected里面的也要同时删掉。
7、在hash中每次添加商品时,先遍历购物车中的商品是否已有,如果已有,则累加count,如果没有再加新的。使用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 = {}
for selected_sku_id in select_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\':\'\'}结构来实现

以上是关于Django电商网站--购物车设计的主要内容,如果未能解决你的问题,请参考以下文章

Django电商网站--订单设计

django计算机毕业设计基于安卓Android的移动电商平台系统APP-商品购物商城app

基于HTML电商项目的设计与实现——html静态网站基于数码类电商购物网站网页设计与实现共计30个页面...

如何一步一步用DDD设计一个电商网站—— 一个完整的购物车

如何一步一步用DDD设计一个电商网站—— 给购物车加点料,集成售价上下文

Django框架项目-电商web(未前后分离)