Django+Vue开发生鲜电商平台之1.项目介绍

CuterCorley
• 阅读 1225

我永远相信只要永不放弃,我们还是有机会的。最后,我们还是坚信一点,这世界上只要有梦想,只要不断努力,只要不断学习,不管你长得如何,不管是这样,还是那样,男人的长相往往和他的的才华成反比。今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。 ------马云

本项目旨在使用Django、Vue和REST Framework等技术开发一个前后端分离的生鲜电商平台。

一、项目概览

在项目中需要使用和掌握的主要技术如下:

  • Vue+Django+REST Framework前后端分离技术
  • restful api开发
  • Django REST Framework的功能实现和核心源码分析
  • Sentry完成线上系统的错误日志的监控和告警
  • 第三方登录和支付宝支付的集成
  • 本地调试远程服务器代码技巧

项目的实现分为三部分:

  • vue前端项目
  • django rest framework系统实现前台功能
  • xadmin后台管理系统

二、项目技术要点

项目的技术重点是Django REST Framework,这是一个专注于Restful API开发的框架,最终熟悉Restful API开发流程,主要技术要点为:

  • 通用view实现rest api接口
    • ApiView方式实现api
    • GenericView方式实现api接口
    • Viewset和router方式实现api接口和url配置
    • django_filter、SearchFilter、OrderFilter、分页
    • 通用mixins
  • 权限和认证
    • Authentication用户认证设置
    • 动态设置permission、Authentication
    • Validators实现字段验证
  • 序列化和表单验证
    • Serializer
    • ModelSerializer
    • 动态设置serializer
  • 支付、登录和注册
    • json web token实现登录
    • 手机注册
    • 支付宝支付
    • 第三方登录
  • 进阶开发
    • djang rest framework部分核心源码解读
    • 文档自动化管理
    • django rest framework的缓存
    • Throttling对用户和ip进行限速

Vue的主要技术点包括API接口、Vue组件和Vue的项目组织结构分析,还涉及到以下知识点:

  1. Vue技术选型分析
  2. API后端接口数据填充到Vue组件模板
  3. Vue代码结构分析

对于Django,会提供进阶知识点,包括如下:

  • Django migrations原理
  • Django信号量
  • Django从请求到响应的完整过程
  • 独立使用Django的Model

除了这些技术点外,还会涉及到API开发过程中很多常见的问题,如:

  • 本地系统不能重现线上系统的bug
  • API接口出错不能及时发现或难找到错误栈
  • API文档管理问题
  • 大量的url配置造成url配置越来越多难以维护
  • 接口不及时去更新文档对方不知道如何去测试接口,但写文档会花费大量的时间去维护
  • 为了防止爬虫,可能需要针对api的访问频率进行限制,比如一分钟、一小时或者一天用户的访问频率限制问题
  • 某些页面将数据放入缓存,加速某些api的访问速度

会针对这些问题给出以下解决方案:

  1. 通过介绍pycharm的远程服务器代码调试技巧让大家不仅可以调试支付、第三方登录还可以调试远程服务器的代码来重现服务器上的bug;
  2. 通过docker搭建sentry来体验错误日志监控系统,让我们不仅可以得到线上的错误栈还能及时在发生系统错误时收到邮件通知;
  3. django rest framework的文档自动化管理以及url的注册管理功能会让我们省去写文档的时间;
  4. django rest framework的文档管理功能不仅可以让我们省去写文档的时间还能直接在文档里面测试接口、自动生成的js接口代码、shell测试代码和python测试代码;
  5. django rest framework提供的throttle来对api进行访问频率限制;
  6. 引入第三方框架来设置某些api的缓存。

本项目的技术前提是Python基础、Django基础、Vue基础和简单MySQL知识,如果未掌握基础的这些小伙伴需要提前预习哦。

三、项目预览

这里先给出一些项目的效果图,让大家先睹为快。 首页效果: Django+Vue开发生鲜电商平台之1.项目介绍 商品信息: Django+Vue开发生鲜电商平台之1.项目介绍 登录页: Django+Vue开发生鲜电商平台之1.项目介绍 注册页: Django+Vue开发生鲜电商平台之1.项目介绍 导航栏: Django+Vue开发生鲜电商平台之1.项目介绍 商品详情页: Django+Vue开发生鲜电商平台之1.项目介绍 结算页面: Django+Vue开发生鲜电商平台之1.项目介绍 支付页面: Django+Vue开发生鲜电商平台之1.项目介绍 订单详情页面: Django+Vue开发生鲜电商平台之1.项目介绍 接口文档页面: Django+Vue开发生鲜电商平台之1.项目介绍

来吧,伙伴们,让我们一起徜徉在项目开发的浩瀚海洋中吧。

本文原文首发来自博客专栏Python Web开发实战,由本人转发至https://www.helloworld.net/p/jVRIJQu6bF5Z,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/107322547查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
2个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。 1、使用解构获取json数据let jsonData   id: 1, status: "OK", data: ['a', 'b'] ; let  id, status, data: number   jsonData; console.log(id, status, number )
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
Wesley13 Wesley13
1年前
4cast
4cast-package-load csv.-Kumar Awanish ------------------------------------- ##### 发布:2020-12-21 17:43:04.501348 #### 作者:Kumar Awanish ### 作者邮箱:awanish00@gmail.com ### 首页: ###
Stella981 Stella981
1年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有`time`,和`datetime`两个,本文先说`time`模块。 ### 关于时间戳的几个概念 * 时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。 * 时间元组(`struct_time`),包含9个元素。  `time.struct_time(tm_y
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序 select * from table_name order id desc; 2.按照指定(多个)字段排序 select * from table_name order id desc,status desc; 3.按照指定字段和规则排序 selec
Stella981 Stella981
1年前
Django中Admin中的一些参数配置
### **设置在列表中显示的字段,id为django模型默认的主键** list_display = ('id', 'name', 'sex', 'profession', 'email', 'qq', 'phone', 'status', 'create_time') ### **设置在列表可编辑字段** list_editable
Stella981 Stella981
1年前
Angular material mat
Icon Icon Name mat-icon code _add\_comment_ add comment icon <mat-icon> add\_comment</mat-icon> _attach\_file_ attach file icon <mat-icon> attach\_file</mat-icon> _attach\
Wesley13 Wesley13
1年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数`NOW()`相同的格式返回日期和时间? 我知道如何使用`date()`做到这一点,但是我问是否有一个仅用于此的函数。 例如,返回: 2009-12-01 00:00:00 * * * ### #1楼 使用此功能: function getDatetimeNow() {
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为