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

CuterCorley
• 阅读 1317

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

本项目旨在使用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/Yb6iJ1u9MU6Z,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/107322547查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
5个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
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:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
1年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱: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.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;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
IconIconNamematiconcode_add\_comment_addcommenticon<maticonadd\_comment</maticon_attach\_file_attachfileicon<maticonattach\_file</maticon_attach\
Wesley13 Wesley13
1年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
8个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
京东云开发者 京东云开发者
3个月前
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究