网上书城项目描述

一.项目概述&架构

1.项目概述

最近参与了一个网上书城项目开发,它是一个B2C模式的电商网站,我们在开发过程中采用了前后端分离的开发模式,前端采用了vue框架,后端采用了DRF框架

2.项目模块&功能

1)项目模块(四个部分)

1 2 3 4
用户部分 商品部分 购物车部分 订单部分

2)购物车部分功能

id 功能
1 购物车记录增删改查
2 购物车记录的全选
3 购物车记录的合并

3)使用技术点

id 技术点
1 购物车记录存储
2 购物车记录合并

二.项目具体内容

1)项目需求

用户可以在看到喜欢的书籍时进行添加购物车操作,将喜欢的书添加到我的购物车中,并可以进行在购物车购买操作

2)项目优化(两次优化)

后来根据项目经理要求,为了增加用户的更好使用购物车体验
1.添加了本地未登陆状态下也可添加购物车的功能,
2.并可以在用户登录的时候将本地购物车记录添加和登陆用户账号中购物车的记录进行合并

3)功能实现

1.购物车记录的存储方案设计

1.已登录
  1. 登陆用户的购物车存储在redis中
    原因:1.为了避免用户频繁操作购物车,造成因放在mysql数据库使得服务器频繁进行数据库增删改查压力过大的情况; 2.使用redis查询也更加快)

  2. 存储内容:
    hash数据类型存储购物车中添加的图书id和对应的图书数量
    (因为每个用户要保存多个图书的id和数量的对应关系)

set(集合)数据类型记录用户勾选的书籍id
(因为只需保存勾选的图书id,不需要保存顺序)

2.未登录
  1. 未登录用户的购物车记录存储在客户端
    (为了避免过多的占用服务器存储空间)

  2. 存储在本地cookie中
    记录添加的图书id和对应的数量,以及图书的勾选状态

  3. 使用pickle与base64模块
    因为cookie只能保存字符串数据,于是采用了先使用pickle模块将字典数据先转换为bytes字节流,再使用base64模块将bytes字节流进行base64编码成bytes内容,最后进行decode解码成字符串类型,存储在cookie中,返回来解析cookie中数据亦然。

2.购物车记录的合并方案设计

1.需求

当用户登录时,可以将用户客户端未登陆时存储在本地的购物车记录与用户账号上的购物车记录进行合并,并当发生冲突时,以本地购物车记录为主

2.方案:封装合并记录的函数,并在登陆视图中进行调用

合并不是新的API接口,而是封装一个函数,在原有登陆流程上进行调用合并方法,补充购物车合并的过程。

  1. 封装
    (取出cookie中数据,存储到redis中,并删除cookie中的记录)

2.调用
1)在普通登陆中添加调用
(重写认证中的post视图,在返回响应之前直接添加)
(我查看了认证的源码,发现rest_framework_jwt提供的obtain_jwt_token视图,实际从rest_framework_jwt.views.ObtainJSONWebToken类视图而来,所以就重写了认证视图,继承ObtainJSONWebToken,重写了post方法,并在其中添加了对合并购物车记录方法的调用)

2)在QQ登陆中添加调用
a. 如果是绑定过的用户,在登陆QQ登陆直接生成jwt token返回之前添加对合并函数的调用

b.对于未绑定过的用户, 重写post方法,增加了调用合并购物车记录的函数

4)开发过程中遇到的问题

1.问题:
在进行购物车增加的接口调试中,发现请求不成功,报错信息401,

2.查询:
后来经过查询资料,发现是jwt token认证机制的问题,当浏览器访问访问的时候,会向后端传一个jwt token,但是当用户没有登陆的情况下,传的值为空,而后端只要发现请求,就会校验jwt token的有效性,当发现无效时,就会返回401未认证

3.解决:
重写认证方法,让登录视图跳过DRF框架认证过程,
并在获取user时,try一下,使其不返回异常,而是user为空

4)增删改查

注意: 在进行增删改查时都要进行用户是否登陆的判断,然后进行不同的操作

网上书城项目描述(本人原创可以借鉴经验,但请勿抄袭)相关推荐

  1. 网上书城项目的需求分析、数据库表设计及前端界面的编写(项目进度一)

    转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165. 本文出自 不怕报错 就怕不报错的小猿猿 的博客 网上书城项目的需求分析. ...

  2. JavaWeb网上书城项目总结(初步1.0)

    JavaWeb网上书城项目总结 目录 项目背景与目标 成员组成 模块划分 数据库设计 功能分析+源码 经验总结 (逐步放上博客,先总结) 成员组成 组长:林俊豪(本人) 组员:温尧皓.麦乙迪.邓梓鹏. ...

  3. java-net-php-python-springboot网上书城项目计算机毕业设计程序

    java-net-php-python-springboot网上书城项目计算机毕业设计程序 java-net-php-python-springboot网上书城项目计算机毕业设计程序 本源码技术栈: ...

  4. 网上书城java负责_网上书城项目总结(servlet_jsp+javaBean)

    网上书城项目总结 1 项目大纲设计: 需求分析 系统设计 详细设计 权限设计 2 技术选型: Servlet+jsp+javaBean Listener+Filter+jstl+fileupload+ ...

  5. java web网上书城_javaweb网上书城项目

    [实例简介] javaweb网上书城项目,采用ssh框架,mysql数据库. [实例截图] [核心代码] bookstore └── ssh_book ├── WebContent │   ├── M ...

  6. 网上书城项目的书籍分类列表展示及新书上架和热销书籍效果展示功能(项目进度四)

    网上书城项目的书籍分类列表展示及新书上架和热销书籍效果展示功能(项目进度四) 前言 需实现的目标(效果图) 书籍分类展示 新书上架展示 热销书籍展示 1.书籍分类展示(实现动态加载数据) 1.1 加载 ...

  7. 网上书城项目——前三阶段(Java实现)

    网上书城项目 第一阶段:使用JavaScript对register.html页面实现表单验证 需求 代码实现 第二阶段 :实现用户的注册和登录 需求1:用户注册 需求2:用户登陆 需要提前掌握的知识 ...

  8. 网上书城项目之后台实现书籍分类、新书上架、热销图书

    网上书城项目 前言 书籍分类 效果演示 新书上架 效果演示 热销图书 效果演示 注意要点 总结 前言 嘿,今天为大家分享的知识点呢,是后台编码实现前端页面上的书籍分类.新书上架.热销图书这三个主要功能 ...

  9. 叮当网上书城项目简介

    叮当网上书城项目 一.项目功能 1.前台功能 图书基本展示,包括推荐图书展示和类图书类型展示. 推荐图书包括条幅推荐,热销推荐和新品推荐. 按照图书类型展示商品. 图书详细信息展示. 图书加入购物车. ...

最新文章

  1. ztree实现左边动态生成树,右边为具体信息功能
  2. 了解 Boost Filesystem Library文件系统
  3. hdu 1698(线段树区间更新)
  4. jQuery实现星星评分功能
  5. 斐波那契数列及其优化
  6. 计算机应用基础的文档,计算机应用基础
  7. 查询网站web服务器,web服务器地址查询
  8. hnu 暑期实训之愚人节的礼物
  9. 《Linux编程》作业 ·003【文件I/O操作】
  10. python控制代码使用的gpu
  11. mysql查询表记录总数sql_SQL Server-快速查询表中的记录总数
  12. xmpp即时通讯协议的特性---长处和缺点!
  13. c语言能编程病毒吗,这个人用C语言写了个简单的“病毒”!
  14. 网聚云联受邀出席5G和边缘计算高峰论坛,与清华研究院达成战略合作
  15. Java理解mian方法
  16. linux命令之cp:略过目录
  17. 基于WIFI-Pumpkin的流氓AP的实现
  18. 计算机语言与语法,编程语言中语法和语义有什么区别?
  19. 心理测量?预知犯罪?AI可以减少京都之殇吗?
  20. python文件处理方式

热门文章

  1. 字符串版本号比较(Java)
  2. 基于linux5.15.5的IMX 参考手册 --- 12
  3. 【Numerical Optimization】17 Penalty and Augmented Lagrangian Methods
  4. websocket 与 socket
  5. 如何让你的 JS 代码写得更漂亮
  6. 基于嵌入式linux智能手表,高大上FarSight Watch开源智能手表投入嵌入式教学实训...
  7. JAVA C++ 经典书箱转让
  8. phpword 右缩进
  9. CorelDRAW中如何指定颜色预置文件
  10. HTTP断点续传(分块传输)(HTTP头格式非常清楚)