技术标签: Django框架
美多商城
项目准备
登录模块
注册
用户模型 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加密
公钥
私钥
数字签名
部署
实现代码我们在编写页面代码的时候往往会需要添加图片。在使用过程中,获取的图片尺寸经常可能和页面需要的尺寸不一致,这时候就需要对获取图片进行缩放。对图片缩放有一定技巧,或者说是固定的编写代码套路。否则可能稍有不慎,就会导致图片被拉伸,失去原有纵横比。下面代码展示了一种保持图片纵横比缩放图片的套路。建议首先看一下这篇文章,使得基线位置和中线位置保持一致:图片垂直居中下面是代码:<!DOCTYPE html><html> <head> <
--无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AS" 之间的排序规则冲突。 CREATE VIEW View_VipBranchStaffBranchList ASselect VipBranchStaff.*,geovindu_branch.B_Name,VipExamCountry.ExamCoun
就不放原题,直接给自己的思路和代码啦**思路:我其实能想到最简便的方法就是,创建一个char型的数组,然后对数组进行排序,从小到大,然后输出第一个不为0的数,然后再依次输出好吧,由于自己没读题的缘故,发现问题在于输入这部分,那就创建一个数组,数组的位置就是对应的值,数组里的内容就是对应值的数量 **#include<stdio.h>#include<string.h>...
工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
HDFS是一个分布式文件系统,可以通过Java API接口对HDFS进行操作,下面记录实现Java API的过程和出现的一些问题及解决方案环境搭建导入jar包#common包中的jar文件导入hadoop-2.8.1\share\hadoop\common\lib\*.jarhadoop-2.8.1\share\hadoop\common\hadoop-common-2.8.1.jar#客户端需
一、什么是Spring:Spring是一个开源的控制反转(Inversion of Control , Ioc)和面向切面(AOP)的容器框架,他的主要目得是简化企业开发。v 控制反转:所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用转移到外部容器,控制权的转移就是所谓的控制反转。v 依赖注入:所谓的依赖注入
mac版mamp下php安装pcntl扩展(2016-09-09 16:29:49)标签:it[掘金]是一个高质量的技术社区,从 Swift 到 ReactNative,性能优化到开源类库,让你不错过互联网开发的每一个技术干货。点击链接或者各大应用市场搜索「掘金」,技术干货尽在掌握中。MAMP Pro是一款适用于Mac操作系统的软件,MAMP PRO是专业级版本的经典本地服务器环境的osx软件。M...
原作者: 红色石头|来自: AI有道梯度下降算法的公式非常简单,”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度的负方向呢?也许很多朋友还不太清楚。没关系,接下来...
jeesite 非字典下拉多选框回显效果使用背景单选下拉框动态下拉列表生成及数据回显欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UM...
因为使用了eslint,需要在package.json文件里面加上 "rules":{ "generator-star-spacing": "off", "no-tabs":"off", "no-unused-vars":"off", "no-console":"off", "no-irregular-whitespace":"off", "no-debugger": "off" } 可以试试保存后关闭代码编辑器,重新打开去运行看看问题解决了没,有时候只是编辑器的事...
kubectl常用示例查看类命令 1 # 获取节点和服务版本信息 2 kubectl get nodes 3 # 获取节点和服务版本信息,并查看附加信息 4 kubectl get nodes -o wide 5 6 # 获取pod信息,默认是default名称空间 7 kubectl get pod 8 # 获取pod信息,默认是default名称空间,并查看附加信息【如:pod的IP及在哪个节点运行】 9 kubectl get pod -o wide10 # 获取指.