本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后端接口设计: 用户部分 JWT 什么是JWT 起源 传统的session认证 用户部分 登录 1. 业务说明 2. 后端接口设计 3. 后端实现 登录 使用登录的流程 创建模型类 urllib使用说明 登录回调处理 登录 使用登录的流程 创建模型类 urllib使用说明 绑定用户身份接口 邮件与验证 学习目标: 业务说明: 技术说明: 保存邮箱并发送验证邮件 省市区地址查询 数据库建表 说明 页面静态化 注意 定时任务 安装 部分 详情页 异步任务的触发 。 后端接口设计 收货地址 使用缓存 安装 使用方法 为省市区视图添加缓存 数据库表设计 表结构 数据表结构 首页数据表结构 Docker使用 Docker简介 用户浏览历史记录 1. 保存 后端接口设计 后端实现 搜索 1. 需求分析 2. 搜索引擎原理 3. Elasticsearch 部分 业务需求分析 技术实现 数据存储设计 1. Redis保存已登录用户 商品部分 业务需求分析 技术实现 查询数据 1. 后端接口设计 部分 业务需求分析 技术实现 登录合并 修改登录视图 部分 保存 1. 后端接口设计 2. 后端实现 保存的思路 创建数据库模型类 接入 开发平台登录 沙箱环境 Xadmin 1. 安装 2. 使用 站点的全局配置 站点Model管理。 在Ubuntu中安装 2. 启动与停止 3. 镜像操作 端与自定义文件存储系统 1. 的Python客户端 安装 使用。
完整笔记资料代码: https://gitee.com/yinuo112/Backend/tree/master/Django/前后端分离django美多商城项目/note.md
感兴趣的小伙伴可以自取哦~
全套教程部分目录:
部分文件图片:
登录
登录开发文档
登录:即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目。
1. 互联开发者申请步骤
若想实现登录,需要成为互联的开发者,审核通过才可实现。
- 相关连接:[
2. 互联应用申请步骤
成为互联开发者后,还需创建应用,即获取本项目对应与互联的应用ID。
- 相关连接:[
3. 网站对接登录步骤
互联提供有开发文档,帮助开发者实现登录。
- 相关连接:[
4. 登录流程分析
5. 知识要点
- 当我们在对接第三方平台的接口时,一定要认真阅读第三方平台提供的文档。文档中一定会有接口的使用说明,方便我们开发。
定义登录模型类
登录成功后,我们需要将用户和美多商场用户关联到一起,方便下次登录时使用,所以我们选择使用MySQL数据库进行存储。
1. 定义模型类基类
为了给项目中模型类补充数据**创建时间
和更新时间
**两个字段,我们需要定义模型类基类。 在meiduo_mall.utils/models.py
文件中创建模型类基类。
2. 定义登录模型类
创建一个新的应用oauth
,用来实现第三方认证登录。
在oauth/models.py
中定义身份(openid)与用户模型类User的关联关系
3. 迁移登录模型类
登录工具LoginTool
1. LoginTool介绍
- 该工具封装了登录时对接互联接口的请求操作。可用于快速实现登录。
2. LoginTool安装
3. LoginTool使用说明
1.导入
2.初始化OAuth对象
3.获取登录扫码页面,扫码后得到Authorization Code
4.通过Authorization Code
获取Access Token
5.通过Access Token
获取OpenID
OAuth2.0认证获取openid
待处理业务逻辑
1. 获取登录扫码页面
1.请求方式
选项 | 方案 |
---|---|
请求方法 | GET |
请求地址 | /qq/login/ |
2.请求参数:查询参数
参数名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
next | string | 否 | 用于记录登录成功后进入的网址 |
3.响应结果:JSON
字段 | 说明 |
---|---|
code | 状态码 |
errmsg | 错误信息 |
login_url | 登录扫码页面链接 |
4.后端逻辑实现
5.登录参数
2. 接收Authorization Code
提示:
-
用户在登录成功后,会将用户重定向到我们配置的回调网址。
-
在重定向到回调网址时,会传给我们一个
Authorization Code
。 -
我们需要拿到
Authorization Code
并完成OAuth2.0认证获取openid。 -
在本项目中,我们申请登录开发资质时配置的回调网址为:
- `
-
互联重定向的完整网址为:
- `
3. OAuth2.0认证获取openid
- 使用code向服务器请求access_token
- 使用access_token向服务器请求openid
4. 本机绑定www.meiduo.site域名
1.ubuntu系统或者Mac系统
2.Windows系统
openid是否绑定用户的处理
1. 判断openid是否绑定过用户
使用openid查询该用户是否在美多商城中绑定过用户。
2. openid已绑定用户的处理
如果openid已绑定美多商城用户,直接生成状态保持信息,登录成功,并重定向到首页。
3. openid未绑定用户的处理
- 为了能够在后续的绑定用户操作中前端可以使用openid,在这里将openid签名后响应给前端。
- openid属于用户的隐私信息,所以需要将openid签名处理,避免暴露。
oauth_callback.html
中渲染access_token
4. 补充itsdangerous的使用
-
itsdangerous
模块的参考资料链接 [ -
安装:
pip install itsdangerous
-
TimedJSONWebSignatureSerializer
的使用- 使用
TimedJSONWebSignatureSerializer
可以生成带有有效期的token
- 使用
补充:openid签名处理
oauth.utils.py
openid绑定用户实现
类似于用户注册的业务逻辑
-
当用户输入的手机号对应的用户已存在
- 直接将该已存在用户跟
openid
绑定
- 直接将该已存在用户跟
-
当用户输入的手机号对应的用户不存在
- 新建一个用户,并跟
openid
绑定
- 新建一个用户,并跟
用户中心
用户基本信息
用户基本信息逻辑分析
1. 用户基本信息逻辑分析
以下是要实现的后端逻辑
- 用户模型补充
email_active
字段 - 查询并渲染用户基本信息
- 添加邮箱
- 发送邮箱验证邮件
- 验证邮箱
提示:
- 用户添加邮箱时,界面的局部刷新,我们选择使用
Vue.js
来实现。