A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hzhjhh 初级黑马   /  2019-6-6 11:05  /  1006 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

# 购物车存储方案

- 如果用户未登录则保存在cookie中

```
{
    商品编号:{
        count:
        selected:
    },
    商品编号:{
        count:
        selected:
    }
    ...
}
将字典与字符串相互转换:json,loads,dumps
新的字典与bytes类型转换包:pickle,loads,dumps
    优点:转换效率高,尤其是字典的值嵌入字典时
加解密:base64,加密b64encode(),解密b64deocde
```

- 如果用户已登录则保存在redis中

```
python代码:
    cart1={
        'sku_id':2
        商品编号:商品数量
        1:2,
        2:2,
        3:1,
    }
选中状态:set[商品编号,1,2,3]
    如果集合中有某个商品编号,表示这个商品在购物车中是选中状态
    如果集合中没有某个商品编号,表示这个商品在购物车中是未选中状态
hash类型的命令
    添加、修改:hset key 商品编号 数量
    删除:hdel key 商品编号
    读取:hgetall key
    key='cart%d'%requst.user.id
set类型的命令
    添加:sadd key 商品编号
    删除:srem key 商品编号
    读取:smembers key
    key='selected%d'%request.user.id
```

# 购物车添加

- 判断用户是否登录,如果登录则操作redis,如果未登录则操作cookie
- 接收:商品编号,数量
- 验证:商品编号的正确性,数量的合法性
- 处理:判断,保存数据
  - 未登录时,先从cookie中读取购物车信息,修改字典,再写cookie
  - 已登录时,写hash、set
- 响应

# 购物车列表

- 不需要接收、验证数据
- 处理:判断,读取购物车数据,根据商品编号查询商品对象
- 响应:渲染html页面
- 说明:为了重用商品的查询代码,将cookie中读取的数据,结构转换为与redis中结构一致

# 购物车修改

- 修改数量
- 修改选中状态
- 在vue中为单选框、加按钮、减按钮、文本框绑定事件
- 整体代码与添加基本一致
- 说明:选中状态的代码不同

# 购物车删除

- 接收商品编号,从redis或cookie中删除

# 总结

### 重要知识点

- 购物车添加、查询、修改、删除
- redis中操作hash的命令:hset,hgetall,hdel
- redis中操作set的命令:sadd,smembers,srem
- 字典与字符串转换:pickle+base64

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马