基于vue+python的鲜果乐生鲜商城

基于python的鲜果乐生鲜商城

摘要:随着互联网巨大的发展,网上购物在广大基层人民中普及,现在的人们越来越多的加入上网购物的行列,因此也衍生出了许多新的电商模式。根据销售的目标的不尽相同而分为B2B和B2C两种模式。B2B是体现在企业同企业之间的一系列包括但不仅限于商业的活动,提到它就会跟很大量级的物流所挂钩,当然还有许多其他大大小小纷繁杂乱的商务类型的活动,而B2C面对的则是企业与个人买家,是大对小的关系,这相当于零售的范畴。
本系统是一个个人开发的WEB应用,采用pyhton的开源框架django rest framwork开发,包含了网上商城所需要的基本功能,像是登录注册,浏览收购买支付等等都是本系统所要实现的功能,这些小的功能结合在一起便构成了这整个网上生鲜商城。
这个系统能够解决人们对网上购买生鲜食品的需求,可以极大的方便人们的生活,让不喜欢出门的人也能够第一时间享受到美食,日后必定能够刺激消费,使GDP得到增长。

关键词: 生鲜商城系统, django rest framwork, 方便快捷

Python -Based Fresh Fruit Store

Abstact:With the huge development of the IT and the popularity of online shopping, online shopping is popular among the masses of grassroots people, and now people are increasingly joining the ranks of online shopping, so many new e-commerce models have been derived according to the different sales target, it can be divided into a lot modes: B2B and B2C.B2B is the business activity between enterprises, which includes many other business activities besides the bulk logistics, while B2C is the business activity between enterprises and individuals, which belongs to the retail category.
This system is a personal development of the WEB application, the use of pyhton open source framework django rest framwork development, including the basic functions required by the online mall, such as login, registration, browsing, purchasing and payment are the system to achieve the function, these small functions together constitute the whole online fresh mall.
This system can solve people’s demand for online purchase of fresh food, which can greatly facilitate people’s life. People who do not like to go out can also enjoy delicious food in the first time, which will surely stimulate consumption and increase GDP in the future.

Keywords:Fresh Store System;, Django Rest Framwork, Convenient and Efficient

目 录

第1章 绪 论 1
1.1课题背景 1
1.2 目的和意义 1
1.3 国内外电商发展现状 2
1.4 论文的主要研究内容 3
第2章 需求分析 3
2.1系统的功能需求 4
2.2 系统的数据流图 4
2.3 UML建模 5
2.4 本章小结 9
第3章 系统设计 10
3.1 开发工具介绍 10
3.1.1 系统整体架构 10
3.2功能模块设计及功能 11
3.3 数据库设计 15
3.3.1 E-R图设计 15
3.3.2 数据表设计 16
3.4 本章小结 20
第4章 系统实现 21
4.1 系统主体设计 21
4.1.1 商品展示模块实现 21
4.1.2 购物车模块实现 22
4.1.3 登录注册模块实现 23
4.1.4 后台管理模块实现 26
4.1.5 支付模块实现 28
4.2 本章小结 29
第5章 系统测试 30
5.1 测试的目的及意义 30
5.2 测试用例及测试结果 30
5.2.1 系统登录测试 30
5.2.2 系统注册测试 31
5.2.3 购物车测试 32
5.2.4 订单支付测试 32
5.2.5 个人信息页测试 34
5.3 本章小结 34
参考文献: 35
致谢 36

第1章 绪 论

1.1课题背景
如今互联网的市场环境已经接近成熟和饱和,其对传统行业的冲击亦是不能忽视的。目前来说我国的大部分城市,它们的电脑和互联网的覆盖率已经十分的惊人,可以说是几乎人手就有一台手机和电脑,这样的情况使得有些人抓住互联网发展机遇,顺应了时代潮流,催生出了许许多多的年轻富豪,其中就包括创办了京东的刘强东,还有悔创阿里杰克马,虽然他们的轶事为人津津乐道,但是不可否认他们的财富积累是以一种十分惊人的态势升高的,很快他们就超过了许多传统产业巨头,把早年的”钢铁大王”和其他几代人共同努力慢慢积累财富的红色资本家甩在在了后面,可以很容易看出目前的富豪榜上互联网巨头就占据了半壁,马云之所以能够在中国首富赞占据一席之地,说明了互联网市场所具有的巨大的潜力,而这潜力还远远没有尽头,在人们经济水平不断提高的同时,人们的思想也更加的开放,原先视上网如洪水猛兽的人也不知不觉的接受并加入到了上网的行列中去。由于网络购物的便利性以及年轻人们追逐潮流这使得网购渐渐已经成为共识,人们会不自觉的去进行这项活动。
只要人们还在上网就不可避免的会被网上的信息所影响,这无疑会对身处其中的人的思维或者消费模式产生一定的改变。久而久之人们更习惯遇到需求就在网上进行搜索,而一旦他有上网的需求就不可避免的会对比不同商家的不同产品,而当你拥有网上的购物平台时,你的未来便会无限延申,每个人都将可能会是你的潜在用户,只要你你能够满足他的需求。即使一时之间这位潜在客户没有任何购物欲望,但是一旦以后他有这样的想法便会去上网,所以说在这个泛互联网时代所有人其实都是你的潜在客户,这个前提便是你的企业和产品要在网上有存在,能够让用户搜索得到,假设一下,若是你连存在都没有,又谈何同其他企业竞争,怕是已经被远远的甩在了身后,连被比较的资格都没有,这也是为什么现在顺应互联网浪潮是多么的重要。
1.2 目的和意义
基于python的这个鲜果乐生鲜商城系统是一个个人店家所经营的生鲜商城,店家拥有自主经营权以及可以自己实现对商品的管理,操作简单不复杂,且功能齐全,系统具备基本商城所拥有的功能像是商品的浏览,首页有商品的推广,全局搜索功能,以及用户收藏,用户下订单等等功能,同时用户还可以在购买时留言,值得一提的时本系统有十分简洁又功能强大的后台管理系统,只需要简单的管理员登录操作就可以使用,系统还提供十分美观又简洁的商品详情信息页,大大增加顾客的浏览体验,并且由于操作的便利,店家不需要知道太多专业相关的知识,可以说是人人都可以上手。网上购物是一种新的经济模式,在这样的电子信息时代,它不仅影响了商业的运转过程,也影响了商业的运转方法,这其实就是一场没有硝烟的技术革命,所谓商城场如战场,这是它的影响就不仅仅是跟商业相关而已了,他已经从不同方面对社会的生产管理、人们的生活和就业产生影响, 不仅如此人们的想法、 思考的方式和往来沟通的方式也因为法律制度甚至于政府的职能当然还有文化被影响而改变。网上商城的好处在于,它能够增加你的商品曝光率,使你拥有更多的潜在客户,拓宽你的商业市场,它在获取更高利益的同时还在帮你节省费用和开支,降低你的投入成本,它还能够做到实体店做不到的比如加快商品之间的流通,让客户对你的反馈更快更方便等等。往远的方面展望 ,随着互联网的蓬勃发展, 越来越多的个人用户将投身于网上购物的浪潮,在享受巨大便利的同时,市场的竞争会越来越激烈,成本不可避免的会成为商家之间的手段,这无疑会带动这一新发展出来的的网络经济模式。

1.3 国内外电商发展现状
国内有名的电商巨头如阿里,京东便是走在时代前沿,其中京东是后来者,但是凭着这几年的发展也占有了很大的市场份额,这几年又相继涌现了像是拼多多等的独角兽企业,让人感到这份蛋糕似乎还没有完全被分完。
国外的老牌电商就不得不说亚马逊了,杰夫贝佐斯作为亚马逊的创始人也是蝉联世界首富榜多年,根据阿里的研究院所推测,预计2020年跨境电商交易规模将达到12万亿元[ 方德花. 跨境电商人才培养校企合作问题探讨[J]. 经贸实践, 2018(03):271-272.],这是一种十分惊人的增长速度。
由此可见,现在的无论是国内还是国外,电子商务的发展前景都是十分光明的,现在投身其中是一种机遇亦是一种挑战。

1.4 论文的主要研究内容
本论文主要是研究如何使用python的流行框架django rest framwork来开发一个简洁功能且功能齐全的网上生鲜商城系统,这个系统主要实现了商品的浏览,商品加入购物车,用户对商品下单,用户支付订单等一系列基本功能,另外还要实现一个简洁易操作的后台管理界面,这由另外一款开源插件xadmin来完成,这个商城系统顺应时代潮流,在如今人人都网购的大环境中为人们提供便利,亦能促进经济发展,节省开支,增加收益。下面将会列出论文的主要设计内容:
(1)由pycharm作为平台、采用MTV的设计模式官方推荐的开源框架django rest framwork实现美观简洁的商城系统。
(2)将会介绍系统主要使用的技术和所使用的简单架构,当然也会包括开源框架的大致介绍。
(3)将会对设计进行简单的需求分析,并且还是有具体的系统设计阶段,还包括部分模块的实现,数据库的设计和选择等等。
(4)测试将会采用黑盒测试法,对系统的功能进行测试。

第2章 需求分析

所有系统的开发都离不开需求分析,详细的需求分析会给后续开发带来巨大得便利。清楚的需求分析能够让开发者和甲方更好的达成共识,减少因为后续实现后的功能不满意而推翻重来的尴尬局面,减少可能产生的损失。
2.1系统的功能需求
随着科技发展,电商也如雨落春笋般四处开花,如今比较流行的电商网站已然成为人们生活中不可缺少的重要组成部分,我们的衣食住行都十分依赖着他,可以说你想的你需要的都可以在网上找到相关的信息,因此这个生鲜商城系统的初衷便是为了满足足不出户便可在家享受到新鲜果蔬和事物的人群,这个系统的主要参与者分为两种即普通用户和管理员,功能也是由这两个参与者划分成2块,用户模块又包含了用户商品浏览,用户进行登录注册,用户对商品的收藏,用户对商品下单,管理员模块的主要功能则为商品信息管理,订单信息管理和用户信息管理。
2.2 系统的数据流图
系统相关的顶层数据流图的过程是用户和管理员对系统发出各种请求如登录请求,注册请求等,系统在收到请求后生成反馈,如图2-1所示:

在这里插入图片描述

图2-1 系统的顶层数据流图

系统的整体数据流图的数过程是用户通过登录信息登录,通过注册信息注册,浏览商品时通过商品编号来收藏,将生鲜加入购物车也是通过商品编号,系统查询对应的表后返回相对的信息,管理员则是通过用户,商品,订单等信息对表进行管理,系统接收到后反馈回页面如图2-2所示:
在这里插入图片描述

图2-2 系统的数据流图1层图

2.3 UML建模
1.明确参与者(角色)
此系统的参与者可以很明确的知道有两种,及管理员和用户,因此根据参与者的不同可以分别画出他们的相关用例图。

2.用户用例图
用户用例图的用例包括浏览商品,个人信息修改,下单,将商品加入购物车,注册,登录,收藏商品,如图2-3所示:

在这里插入图片描述

图2-3 用户的用例关系图

下面列出几个用例规约:
表2-1 注册用例规约
用例编号 2-1 用例名称 注册
功能描述 给需要收藏商品或者访问购物车的用户进行注册
执行者 用户
前置条件 进入注册相关的页面
后置条件 当注册完成后会自动转发到login页
涉众利益 注册用户
基本路径 1、用户进入注册界面进行注册
1.1用户进入系统界面,点击注册的链接或按钮
1.2填写注册信息
1.2.1输入注册信息(手机号、验证码、密码等)
1.2.2系统跟数据库匹配,进行验证码的检验
1.3数据库保存用户信息,用户注册成功
1.3.1更新用户信息库,添加用户注册信息(密码、手机号等)
1.3.2 弹出窗口提示注册成功,并跳转至登录页
扩展 1.2a若输入的手机号有问题,系统将会提示输入有效的手机号
字段列表 密码、验证码、手机号
备注 无

表2-2 商品加入购物车用例规约
用例编号 2-2 用例名称 购物车
功能描述 将所需要购买的生鲜等物品加进去购物车里面
执行者 用户
前置条件 处在某个生鲜的详细信息页
后置条件 添加后跳转到购物车
涉众利益 用户
基本路径 1、用户在商品详细信息页浏览
1.1选择商品
1.2.1 在商品分类中选择其中一种需要购买的
1.2.2 选择购买数量
1.2点击加入购物车按钮
1.3跳转到购物车页
1.3.1 填写收货地址
1.3.2 选择支付方式
扩展 1.3a 目前只支持支付宝付款
1.3b 收获地址不能为空,需要至少一个收货地址
字段列表 收件人、手机号、收件地址
备注 无

表2-3 用户下单用例规约
用例编号 2-3 用例名称 下单
功能描述 用户下单并支付需要购买的商品
执行者 用户
前置条件 购物车中有商品,至少有可选的收货地址
后置条件 添加后跳转到购物车
涉众利益 用户
基本路径 1、用户在购物车界面
1.1点击下单按钮
1.2跳转到支付页面
1.3扫码完成支付
1.3.1 支付成功,跳转回原页面
1.3.2 支付失败返回订单界面
扩展 无
字段列表 无
备注 无

3.管理员用例图
管理员用例图的用例包括商品信息管理,订单管理,用户信息管理,登录,其用例图如图2-4所示:

在这里插入图片描述

图2-4 管理员的用例图

下面列出几个管理员的用例规约:
表2-4 订单管理用例规约
用例编号 2-4 用例名称 订单管理
功能描述 管理员对订单信息进行操作
执行者 管理员
前置条件 管理员登录后台页面
后置条件 数据库得到更新
涉众利益 管理员
基本路径 1、管理员进入后台页面
1.1点击订单选项
1.2更新订单信息(增、删、改)
1.3保存订单信息
扩展 无
字段列表 订单时间、订单金额等
备注 无

表2-5 用户信息管理用例规约
用例编号 2-5 用例名称 用户信息管理
功能描述 管理员对用户信息进行操作
执行者 管理员
前置条件 管理员登录后台页面
后置条件 数据库得到更新
涉众利益 管理员
基本路径 1、管理员进入后台页面
1.1点击用户选项
1.2更新用户信息(增、删、改)
1.3保存订单信息
扩展 1.2a 用户隐私信息不可见
字段列表 用户名、手机号等
备注 无

2.4 本章小结
本章通过需求分析确定了将要实现的功能有两大类,分为前后,另外从参与者角度出发进行UML建模给各个角色制定了用例图,并附加规约表进行了详细的解释,不仅如此还通过数据流图更好的展示了数据走向,让需求更加的清晰。

第3章 系统设计

3.1 开发工具介绍
1.开发语言:本系统采用python3.5为主要语言开发,python具有多平台兼容,易学易用,可拓展性强,丰富的生态等许多优点,作为开发用是十分好用的语言。
2.框架选择:好的框架能够令开发事半功倍,这里后端采用的是python的一个开源框架django rest framwork[ 陈占省. 基于REST架构风格的电机制造物联网系统[D].],这个框架集成了许多开发用的功能和库,可以令代码更简洁,大大减短开发时间和精力,前端则是使用Vue,Vue也是目前十分热门的前端框架。
3.开发软件:数据库方面经过采纳用的是MYSQL 5.5的通用版本,这个版本是相对好用的一个版本,MYSQL也是目前使用人物最多的免费数据库软件,功能和社区十分强大,IDE选择的是pycharm这个软件,依然是功能十分强大的开发软件,能够令开发事半功倍。

3.1.1 系统整体架构
同java语言不同的是,django的架构是MTV而不是大家都比较熟悉的MVC,但是其实现的原理是大同小异的。
(1)M(model):M即是模型层,这一层的主要作用是写同数据库交互的逻辑,django有一套自带的ORM,十分强大,只需要按照他给定的规则去定义好数据库中的字段,便可以对数据库进行增删改等操作。
(2)T(template):T是模板,代表的是模板层,django有自己的模板语言,其作用是将数据库中的变量得以嵌入到HTML中去。
(3)V(view):V即是视图层,视图层类似于JAVA中的controller,用来实现业务逻辑。
此外,django还有一个路由系统,用来对视图和路由之间进行映射,简单来说就是一个URL对应一个视图。他们的具体关系图如图3-1所示。

在这里插入图片描述

           			图3-1 系统整体架构

3.2功能模块设计及功能
网上生鲜商城分为前台和后台两部分,其中前台模块主要负责服务于用户,有与用户进行交互的功能,主要有登录注册,商品展示,购物车,用户订单,用户信息,支付等模块,后台则主要是由管理员操作,有管理员登录,订单管理,商品信息管理,用户信息管理等。
在这里插入图片描述

图3-2 系统的功能模块图

(1)前台模块:
1.登录注册模块:用于用户的登录注册,注册是通过手机发送验证码注册,登录可以 通过注册时填写的用户名或手机号来进行登录.用户浏览商城不需要登录。如图 3-3是用户登录流程图,图3-4是用户注册流程图。

在这里插入图片描述

图3-3 用户登录流程图

在这里插入图片描述

图3-4 用户注册流程图

2.商品展览模块:商品展览模块包含了商品展览列表页,商品详细信息页,不同商品之间的分类,其中列表页用于展示商品,详细信息页包括了商品的具体信息如商品叫什么,商品的数量有多少,商品的单价是多少,商品库存还剩多少,商品的简短介绍等,商品分类包括分类的名称,分类的具体描述,分类的不同类型等。
3.购物车:购物车主要是用于用户添加想要购买的物品,添加完后购物车会统计总价,方便用户下单,用户添加物品到购物车后,可以下单,如图3-5是购物车流程图。
在这里插入图片描述

图3-5 购物车流程图

4.用户订单:订单分为已付款和未付款两种状态.订单保存用户从购物车添加后下单的商品信息,包括商品列表,商品总价,下单时间,订单编号等。
5.用户个人中心:用户个人中心展示着用户的个人信息,商品收藏,我的订单,以及收获地址的删改等。
6.支付:当用户下单并付款时,将会弹出付款码进行支付,支付的接口采用支付宝的支付接口。

(2)后台管理模块:
1.管理员登录模块:跟用户登录模块类似.只不过管理员是super user,具有许多用户所没有的权限。
2.订单管理模块:管理员能够在后台的界面中查看到一切订单,并对订单进行必要的操作。
3.商品信息管理模块:管理员在后台可以查看到所有的商品类别,并可以添加新的商品,也可以删除修改商品信息。
4.用户信息管理模块:管理员在后台界面中能够浏览用户的个人信息但不包括加密信息,比如说密码,此外也能够对用户信息进行一系列的管理比如增加记录,删除和修 改记录等。

3.3 数据库设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式。[ 于中远, 王亚平. 应用环境中最优数据库模式的构建[J]. 河南科技, 2011(21):56-57.]好的数据库设计可以减少后续开发的难度。
3.3.1 E-R图设计
本系统的数据库设计E-R图如图3-2所示:

在这里插入图片描述

图3-5 E-R图
3.3.2 数据表设计
根据需要本系统需要创建一个数据库supermarketOL,此外还需要创建7张表,分别是存储用户信息的userinfo(用户信息表),admin(管理员表),包含所有商品信息的goods(商品信息表),存储商品种类的goods_category(商品分类表),存储接收到的验证码的verifycode(验证码表),存储订单的orderinfo(订单信息表),存储订单详情的orderdetail(订单详情表)。

表 3-6用户信息表 userinfo

字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
NAME VARCHAR 30 用户名
PASSWORD VARCHAR 30 密码
BIRTHDAY VARCHAR 30 生日
GENDER VARCHAR 2 性别
MOBILE VARCHAR 50 手机号码
EMAIL VARCHAR 200 邮箱
ADDRESS VARCHAR 200 地址

表 3-7 用户信息表 verifycode
字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
CODE VARCHAR 30 验证码
MOBILE VARCHAR 30 手机号码
ADD_TIME DATETIME 30 创建时间

表 3-8 管理员表 admin
字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
USERNAME VARCHAR 30 用户名
PASSWORD VARCHAR 30 密码
EMAIL VARCHAR 50 邮箱

表 3-9 商品信息表 goods

字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
GOODS_SN VARCHAR 50 商品编号
NAME VARCHAR 100 商品名称
CLICK_NUM INT 6 点击量
SOLD_NUM INT 6 销售量
GOODS_NUM INT 6 商品库存
FAV_NUM INT 6 收藏数
GOODS_IMAGE VARCHAR 200 商品图片
IS_NEW TINYINT 1 是否新品
IS_HOT TINYINT 1 是否热销
CATEGORY_ID INT 5 分类ID
TRANSLATE_FREE TINYINT 1 是否免运费
ADD_TIME DATETIME 创建时间

表 3-10 商品分类表 goods_category

字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
NAME VARCHAR 50 分类名称
CODE VARCHAR 200 分类码
DESC VARCHAR 200 分类描述
CATEGORY_TYPE INT 2 分类类型
PARENT_CATEGORY_ID VARCHAR 20 分类父类型

表 3-11 订单信息表 orderinfo

字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
ORDER_SN VARCHAR 50 订单编号
TRADE_NO VARCHAR 50 交易编号
PAY_STATUS VARCHAR 10 支付状态
POST_SCRIPT VARCHAR 100 订单留言
ORER_MOUNT VARCHAR 10 订单金额
PAY_TIME DATETIME 支付时间
ADDRESS VARCHAR 200 收货地址
SIGNER_NAME VARCHAR 20 签收人
SIGNER_MOBILE VARCHAR 11 联系电话
ADD_TIME DATETIME 创建时间

表 3-12 订单详情表 orderdetail
字段名 字段类型 字段长度 字段含义
ID VARCHAR 20 主键
ORDER_ID VARCHAR 20 订单
GOODS_ID VARCHAR 20 商品
GOODS_NUM VARCHAR 10 商品数量

3.4 本章小结
这一章主要进行的是对表的设计和分析,也是十分重要的一个环节,通过这一章节需要建立的表和字段已经十分的清晰,E-R图能使我们更加熟悉表与表之间的关系,而表字段设计则是立足于需求。

第4章 系统实现

4.1 系统主体设计
4.1.1 商品展示模块实现
商品展示模块是用户登录后需要浏览的页面,包含首页,详情页,列表页,首页用于热门商品展示,详情页是展示关于商品的相关详细信息记录,列表页是展示分类展示所有商品的页面,并且可以按热度,新品,销量等排序,实现效果图如下所示:
在这里插入图片描述

图4-1 商城首页效果图

详情页包含了商品的描述,商品的轮播图,商品单价,另外还有收藏和加入购物车的功能给用户,用户还可以选择适当的购买数量,其实现图如图4-2。

在这里插入图片描述

图4-2 商品详情页效果图

4.1.2 购物车模块实现
购物车模块是寄存用户从详细页添加的商品,用户需要有登录后才有权限进入,当用户在商品详情页点击加入购物车后,购物车就会出现商品列表,包含了商品的各种信息,在购物车界面用户可以选择增加或减少要购买的商品数量,也可以选择下单。

在这里插入图片描述

图4-3 购物车效果图

4.1.3 登录注册模块实现
(1)登录注册模块需要实现的效果是用户先通过填写注册表单进行注册,注册时通过填写手机号并接收验证码进行注册,注册完成后便会跳转到登录页面,登录则是通过手机号或用户名进行登录,如图为登录注册的效果图:

在这里插入图片描述

          				图4-4 登录注册效果图

(2)主要实现逻辑:1.登录主要需要实现的便是表单的验证,django rest framwork的官方文档中有比较好的实现方案,具体是要重写authenticate方法,在这个方法里面主要做用户名和密码的判断,若是验证成功就返回用户,否则返回none。下面是登录部分相关代码:
users-> views.py
class CustomBackend(ModelBackend):
“”"
自定义用户验证
“”"
def authenticate(self, username=None, password=None, **kwargs):
try:
user = User.objects.get(Q(username=username)|Q(mobile=username))
if user.check_password(password):
return user
except Exception as e:
return None

2.注册主要是实现手机发送验证码,发送验证码需要用到第三方服务,这里采用的是云片,它的短信服务收费较为合理,此处具体是写一个方法generate_code,它的作用是生成随机四位数字的验证码,云片通过你自定义的生成方式来发送验证码到目标手机,而云片的使用则是仿造云片官网的API文档来实现,下面是大致代码:
users-> views.py
class CodeViewset(CreateModelMixin, viewsets.GenericViewSet):
“”"
发送短信验证码
“”"
serializer_class = CodeSerializer

def generate_code(self):
    """
    生成四位数字的验证码
    """
    seeds = "1234567890"
    random_str = []
    for i in range(4):
        random_str.append(choice(seeds))

    return "".join(random_str)

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)

    mobile = serializer.validated_data["mobile"]

    yun_pian = YunPian(APIKEY)

    code = self.generate_code()

    sms_status = yun_pian.send_sms(code=code, mobile=mobile)

    if sms_status["code"] != 0:
        return Response({
            "mobile":sms_status["msg"]
        }, status=status.HTTP_400_BAD_REQUEST)
    else:
        code_record = VerifyCode(code=code, mobile=mobile)
        code_record.save()
        return Response({
            "mobile":mobile
        }, status=status.HTTP_201_CREATED)

4.1.4 后台管理模块实现
(1)本系统中后台管理模块是一个整体,它包含了管理员登录,管理员对商品,订单,用户信息等的管理,这里把他作为一个整体来实现,而不是单独实现.管理员可以点击左侧菜单选择要更改的选项,便可以同数据库进行交互,进行数据的增删改查。

在这里插入图片描述

      					图4-5 后台管理模块效果图

(2)主要实现逻辑:后台管理主要是采开源集成插件xadmin完成,只需要少量的代码配置,就可以拥有一个功能齐全界面简洁美观的后台,而实现这主要需要几个步骤:
1.在开源社区github上下载xadmin的相关包,然后将其移植到根目录中。
2.在settings.py的INSTALLED_APPS中需要加入xadmin,如下代码:
INSTALLED_APPS = [
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘users.apps.UsersConfig’,
‘DjangoUeditor’,
‘crispy_forms’,
‘django_filters’,
‘xadmin’, #后台管理配置
‘rest_framework’,
‘corsheaders’,
‘rest_framework.authtoken’
]
3.在每一个功能块下都需要新建xadmin.py文件,用于初始化其应用相关的后台配置信息。

4.1.5 支付模块实现
当下使用比较广泛的无非是支付宝还有微信,本系统采用的是支付宝接口[ 汤金瓯, 余世明. 基于支付宝的自动售货机网上支付系统%Online payment system of vending machine based on alipay[J]. 机电工程, 2010, 027(005):124-126.]进行支付,python实现这个接口的话需要用支付宝提供的SDK,在虚拟环境中通过pip insatll alipay-sdk-python这条命令就可以安装,要实现支付宝支付首先要去支付宝开发者平台创建沙箱应用,这部分操作将让我们得到相应的APPID,支付宝网关还有密钥,密钥需要填写下载如图4-6密钥生成工具生成的公钥,填写后会生成支付宝公钥,生成支付宝公钥后将其保存至txt文件中待用,这些都是实现支付必不可少的要素,接下来还要写许多支付相关的逻辑,在开发阶段都是使用沙箱环境进行测试。支付成功后会自动跳转为预先设置好的页面。图4-7和图4-8是效果图。
在这里插入图片描述

图4-6 密钥生成工具

在这里插入图片描述

图4-7 支付效果图

在这里插入图片描述

图4-8 支付成功跳转效果图

4.2 本章小结
本章主要介绍了5个主要功能模块的实现效果图,并简单的附上了实现的具体逻辑和代码,通过这一章节,一个系统的雏形已经逐渐成熟。

第5章 系统测试

5.1 测试的目的及意义
测试的目的不仅是为了发现软件缺陷与错误,而且是对软件质量进行度量和评估,以提高软件的质量[ 胥家瑞. 浅谈白盒测试和黑盒测试在软件测试中的作用[J]. 天津市财贸管理干部学院学报, 2010(4):53-54.]。测试是为了在前期以少量人力换取后期维护的效率,如果没有测试,错误累积起来,后续会带来难以预估的损失。测试的意义是能够发现系统的更多缺陷,提高开发效率,也为了能够在上线后给予用户更好的体验,如果上线的产品BUG频发,那对于用户来说使无法忍受的,这无疑会削弱软件的寿命。
测试一般来说有两种,其一为黑盒测试,其二为白盒测试,黑盒测试又叫功能测试,测试人员不需要考虑内部逻辑,仅仅测试其功能是否符合需求,白盒测试与黑盒测试相反,注重的使程序内部逻辑,本系统采用的测试方法为黑盒测试。

5.2 测试用例及测试结果
5.2.1 系统登录测试
功能描述:用户通过注册后的账号密码进行登录,管理员不需要注册即可登录,默认账号为admin,密码为123456。用户输入用户名和密码,当输入的用户名或密码错误时会提示用户名或密码错误,若用户名不存在则会提示用户名不存在。系统的登录测试用例如表5-1所示。

表5-1 系统登录测试用例图
序列测试目的 测试输入 测试结果 测试说明
用户名 密码
用户名为空 (为空) admin 用户名或密码不正确 用户名为空报错
密码为空 admin (为空) 用户名或密码不正确 密码为空报错
用户名密码都为空 (为空) (为空) 用户名或密码不正确 用户名或密码错误
错误的用户名 admin1 123456 用户名不存在 用户名不存在
用户名、密码都正确输入 admin 123456 跳转到首页 登录成功

5.2.2 系统注册测试
功能描述:用户需要通过注册来获得用户名和密码,注册的方式使手机号码注册,通过发送手机验证码,再填写验证码和密码来完成注册。手机号的格式必须为11位,验证码是随机的四个数字英文混合的组合,密码不能为空。系统注册测试的用例如表5-2所示。

表5-2 系统注册测试用例
序列测试目的 测试输入 测试结果 测试说明
手机号 验证码 密码
输入错误手机号 137289874332 123456 提示输入有效的手机号 无效手机号
输入正确手机号,密码为空 15099831654 YC1S 验证码有效,密码不能为空 密码为空报错
输入正确手机号,密码不为空 15099831654 KI8C 123456 跳转到登录页 注册成功

5.2.3 购物车测试
功能描述:当用户把想要购买的生鲜添加到购物车中,购物车会自动计算物品的总价,用户点击增加或减少商品数量按钮,总价也会随之变化,用户点击删除商品按钮或清空购物车,购物车便会被清空,不显示任何商品,用户点击下单,便会跳转到订单支付页面,点击商品,则会跳转到商品详情页。测试用例如表5-3所示。

表5-3 购物车测试用例
测试目的 测试内容 测试结果 测试说明
点击增加,减少商品数量按钮 商品数量会随之增减,商品价格也会随之增减 增减按钮和总价功能正常
点击删除按钮 商品被删除 删除功能正常
点击清空按钮 商品被清空 清空功能正常
点击下单 跳转到支付页面 下单功能正常
点击商品图片 跳转到商品详情页 跳转详情页功能正常

5.2.4 订单支付测试
功能描述:用户在购物车点击下单后便会转发到订单支付页面,再点击支付按钮则会转发到相关支付页面,需要扫描二维码来完成支付。支付成功后在订单页面下该订单的状态会变成已支付。订单支付测试用例如表5-4所示。
表5-4 订单支付测试用例
测试目的 测试内容 测试结果 测试说明
点击支付按钮→跳转到支付窗口 跳转成功 跳转正常
在支付窗口扫描二维码 支付成功,跳转到预设页,订单状态由未付款变为已付款, 支付功能正常,跳转正常,状态变化正常

5.2.5 个人信息页测试

功能描述:个人信息页包含用户的地址,基本的信息如姓名电话,订单按钮等用户信息,用户可以对自己信息进行修改。个人信息页测试用例如表5-5所示。

表5-5 个人信息页面测试用例
测试目的 测试内容 测试结果 测试说明
修改地址,点击保存 修改成功 修改地址功能正常
点击我的订单按钮 跳转到订单页面 跳转订单页面功能正常
修改个人信息,点击保存 修改成功 修改个人信息功能正常

5.3 本章小结
本章通过黑盒测试法对模块的许多功能进行了测试,经过测试,各个功能皆正常,由此本系统也算基本达到实现的目标。

参考文献:

[1]福塔. MYSQL必知必会[M]. 人民邮电出版社, 2009.
[2]DavidFlanagan, 弗兰纳根, 淘宝前端团队. JavaScript权威指南[J]. 2012.
[3]Freeman A . Extending Vue.js[M]// Pro Vue.js 2. 2018.
[4]Luciano Ramalho. Fluent Python[M]. O’Reilly, 2015.
[5]杨艳. 电子商务网站建设基础与实践[M]. 北京大学出版社, 2008.
[6]陈毅. 基于Django的生鲜电商系统的研究与开发[D].
[7]丘恩. Python核心编程: 第二版[M]. 人民邮电出版社, 2008.
[8]Julia Elman, Julia Elman. Lightweight Django[J]. 2014.
[9]Allen B. Downey. Python for Software Design[J]. oreilly media, 2009.
[10]Heiko Böck. RESTful Web Services[M]// The Definitive Guide to NetBeans™ Platform 7. Apress, 2012.
[11]Rubio D . REST Services with Django[M]// Beginning Django. 2017.
[12]袁子路. 移动互联网应用服务平台的设计与实现[D].中山大学,2014.

致谢

四年的点点滴滴和日积月累的学习,在老师的循循善诱下,以及同学的支持鼓励下,这一切的一切促使我大步向前,光明磊落。我感到无比的幸福能够在这样的环境下完成学业考核在此再次感谢所有帮助我的人。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值