后续技术类文档更新到微信公众号-------->>喜欢的扫码关注
美多商城
项目准备
登录模块
注册
用户模型 AbstractUser
图片验证码
第三方工具包
Redis
UUID
验证码内容
子主题 3
短信验证码
云通讯
Celery
任务队列 broker
Redis
处理器 worker
跨机部署
delay方法发送异步任务
celery -A celery_tasks.main worker -l info
Redis
手机号作为key
短信验证码内容
图片验证码必须正确
标记flag, Redis, 60s
注册
注册成功的返回值
username, user_id, token
JWT, Token
组成: header.payload,signature
生成登录token的方式
itsdangerous生成自定义token
登录
传统登录
obtain_jwt_token能够直接实现登录逻辑
自定制返回值
支持手机号和用户名登录
QQ登录
-
调用接口,获取qq登录的网址
-
用户进行扫码登录
-
跳到回调地址页, 带个code参数
-
调接口, code传给服务器, 服务器使用code换openid
-
查询openid是否已经绑定
未绑定
access_token
已绑定
返回token
- 未绑定, 提交表单, 执行绑定操作
用户中心
展示用户基本信息
request.user
permission_classes = [IsAuthenticated]
保存邮箱并发送激活链接
User, email_active
发邮件
163邮箱
from django.core.mail import send_mail
Celery
生成激活链接
access_token, user, email
用户点击激活链接,完成激活
校验access_token
修改email_active
收获地址管理
ViewSet
省市区三级联动
缓存
CacheResponseMixin
商品部分
表设计
2张广告表
9张商品表
SPU, SKU
FastDFS
tracker
storage
自定义文件存储系统
admin, 富文本编辑器, CKEditor
docker
镜像
容器
页面静态化
首页静态化
-
从数据库查询数据
-
渲染模板
-
写入文件
详情页静态化
时机
首页, 每个5分钟
定时任务 Crontab
详情页, 数据发生改变
监听admin保存操作
Celery
脚本文件
浏览历史记录
Redis
list, sku_id
商品列表页
分页
DRF自带分页功能
排序
DRF自带OrderFilter
商品搜索
ElasticSearch
索引
haystack
定义索引类
复合字段text
调用命令生成索引
序列化器
视图集
购物车
已登录
Redis
hash
sku_id, count
set
已经被勾选的sku_id
未登录
Cookie
dict–>str
pickle, dict–>0101001
base64, 0101001–>b’str’
如何判断是否已登录?
request.user
增删改查, 全选
合并购物车
时机
传统登录
QQ登录
订单
订单结算
保存订单
往订单表插入记录
往订单商品表插入记录
开启事务
并发问题解决
悲观锁
乐观锁
任务队列
支付
支付宝支付
-
获取支付宝的网址
-
用户进行支付
-
跳到回调地址页, 携带一大堆参数和签名
-
将参数传给服务器, 进行校验, 验签, 成功后更新数据库, 订单状态更新, 记录交易流水号
RSA加密
公钥
私钥
数字签名
部署