【基于Django框架的网上商城设计(论文)6800字】_第1页
【基于Django框架的网上商城设计(论文)6800字】_第2页
【基于Django框架的网上商城设计(论文)6800字】_第3页
【基于Django框架的网上商城设计(论文)6800字】_第4页
【基于Django框架的网上商城设计(论文)6800字】_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Django框架的网上商城设计目录摘要 1第1章绪论 21.1选题的目的及意义 21.2网上购物的发展现状 21.3实现系统的主要内容 2第2章设计的主要技术和分析 32.1Vue.js 32.2Python 32.3前后端分离架构 32.4Django 3第3章详细设计与实现 53.1数据库的设计与实现 53.2系统功能模块的概要设计 73.2.1功能设计图 73.2.2用户模块 73.2.3商品模块 83.2.4购物车模块 83.2.5商品搜索模块 83.3系统功能实现 83.3.1登录注册模块 83.3.2用户中心模块 113.3.3购物车版块 123.3.4商品模块 133.3.5商品搜索模块 133.4系统功能测试分析 143.4.1系统测试的目的与意义 143.4.2系统功能测试 15第4章结论 17参考文献 18摘要:关键词:网上商城;商品搜索;Django;Vue.js;Python第1章绪论1.1选题的目的及意义网上购物的潜力是巨大的,市场上有很多机会,互联网营销是世界上营销的最重要方面之一。电子商务中心由在线销售提供动力,通过在线销售,消费者可以购买不同类别的产品,不用去超市或商场也能查找消费者要的产品分类区,使客户可以快速获得所需的产品。互联网销售与传统方法相比,在商品种类方面:用户可以挑选的商品种类多,可以做到货比三家,择优选择。在购物的便捷方面:用户可以在手机或者电脑上进行挑选,不必去门店,节约了用户的大量时间。在用户体验方面:用户可以用更少的价钱买到更优的产品。网上商城可以提供有关商店中所有产品的详细信息。这样的好处是有关产品的详细信息都可以查看。因此网上商城对用户的好处由此可见。对于商户而言,网上商城不需要门店,节省很大一部分成本,商品价格可以降低,它吸引了更多的客户并增加了利润。只要有网络连接,用户可以在任何领域浏览产品,可以随时随地购买该产品。所以优点是成本较低,利润较高。1.2网上购物的发展现状随着4G网络的普及,5G时代的到来,人们对宽带互联网的使用有了质的飞跃,人们的生活方式也可以是选择性的。如今,互联网已经成为许多生活的一部分,各种各样的购物网站应运而生,购买形式丰富多彩。据中国互联网信息中心发布的第45次《中国互联网络发展状况统计报告》显示,我国网民规模达9.04亿,网络购物用户规模达7.10亿,手机上网比例更达99.3%。未来,中国网民的人数将继续增加,中国互联网经济的实力将继续保持并且更加强劲。由此可见,网上购物已经占据了主要地位,已经成为了一种潮流,更是以后的购物的发展趋势。1.3实现系统的主要内容基于Django的网上商城的系统设计需要实现以下功能:①用户通过正确输入图片验证码及手机号来获取短信验证码,校验完短信验证码,设置密码来完成注册②用户通过正确的手机号和密码完成登录③用户在个人中心中设置自己收获地址④后台管理员可以通过CKEditor富文本编辑器来添加商品的种类⑤用户可通过Elasticsearch搜索引擎来搜索自己想要的商品⑥用户将商品添加至购物车,最后完成订单第2章设计的主要技术和分析2.1Vue.jsVue.js是作者尤雨溪于2014年2月发布的。Vue.js被定义为Web界面开发的前端库,是个非常方便的前端轻量级的工具。Vue.js和Google的AngularJS、Facebook的ReactJS相比较,它更加轻量级,使用也相当方便,这使其语法非常简短、易于使用、灵活高效,这些特点使开发人员非常满意。Vue.js一套开发用于创建用户界面渐进式框架,Vue.js组件Component的概念使得它的设计方法是自上而下的。同时,Vue.js还能与现代工具链和各种辅助库一起使用,如与element-ui整合,使得页面更加美观;与Axios整合,为与后端服务沟通提供了良好的桥梁作用。在本次设计中Vue.js主要用于前端界面设计,前端代码的编写,同时保证了与后端服务器的沟通。2.2PythonPython是一个高层次结合注释,编辑,交互和基于对象的高级脚本语言,有相对较少的关键字,结构相对简单,有定义明确的语法,简单易学,代码定义很清楚,Python的成功在于源代码中维护Python非常容易,最大的优点是有更多、更大的资源库,而且能跨平台,在Linux,UNIX,Windows和Macintosh兼容很好。Python获得支持的互动模式,您可以从终端输入代码执行的语言并获得结果,交互式测试和调试代码的片段。基于在开源功能方面,Python已经被移植(也就是使其工作)到许多平台,如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。Python提供所有主要的商业数据库的接口,Python支持GUI可以创建和移植到许多系统调用。在本次设计中主要采用Python语言作为后端代码的编写语言2.3前后端分离架构随着互联网的发展,单机版架构已经不在适用于庞大的用户请求了,而且单机版架构也不利于后期的升级维护。因此,为了降低项目的耦合度,同时减少服务器的压力,前后端分离架构应运而生。前后端分离架构将前端页面与后端服务进行分离,前端页面通过异步请求后端服务的API,而后端服务则将请求数据以JSON的形式返回,这就使得前后端分离了,提高了系统的性能。在本次设计中使用了前后端分离架构2.4DjangoDjango是一个由Python编写的一个开放源代码的Web应用框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务Django本身基于MVC模型,即Model(模型)+View(视图)+Controller(控制器)设计模式,MVC模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。且Django具有低耦合、开发快捷、部署方便、可重用性高、维护成本低等特点在本次设计中Django作为后端服务器的框架,保证服务器和前端以及数据库之间的交互。第3章详细设计与实现3.1数据库的设计与实现表结构的设计是保证整个系统正常、高效运行的重要保证之一。如果一个表中某些列常用,则可以采用垂直拆分,另外垂直拆分可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会更容易定位。⑴用户表tb_users用于存储网上商城的用户信息,相关字段有:用户ID、账户名、密码、创建时间、手机号、默认地址ID等具体如下表所示:表3.1用户表字段名称数据类型说明idint主键passwordvarchar密码usernamevarchar用户名date_joineddatetime创建时间mobilevarchar手机号(最大长度11位)default_address_idint外键(连接用户默认地址表)⑵收货地址表tb_address用于存储用户的收货地址,相关字段有:地址ID、收货人、收货地址、电话号码、收货城市id、收货县区id以及关联的用户ID等,具体如下表所示:表3.2收获地址表字段名称数据类型说明idint主键receivervarchar收货人mobilevarchar收货电话city_idint收货城市iddistrict_idint收货县区idprovince_idint收货省id(按行政代码设置id)基于Django框架的网上商城设计⑶收货地址区域表tb_areas用于存储各省市区县的地址,相关字段有:ID、城市名称、自关联的ID,具体如下表所示:表3.3收获地址区域表字段名称数据类型说明idint主键namevarchar城市名称parent_idint对应的上一级城市id(自关联)⑷商品表tb_goods用户存储商品信息,相关字段有:ID、商品名称、售卖数、剩余数、栏目ID具体如下图所示:表3.4商品表字段名称数据类型说明idint主键namevarchar商品名称salesint售卖数commentsint库存数category_idint所属栏目⑸订单表tb_orders用户订单表,相关字段有:创建时间、金额、重量、数量、地址ID、用户ID具体如下图所示:表3.5订单表字段名称数据类型说明create_timedatetime创建时间order_idint订单号idint主键total_countint总数total_amountfloat总金额(小数点后两位)address_idint对应的地址iduser_idint对应的用户id⑹商品各版本表tb_sku,相关字段有:ID、名称、介绍、价格、对应的商品ID、图片地址具体如下图所示:表3.6商品版本表字段名称数据类型说明idint主键captionvarchar商品介绍namevarchar商品名称pricefloat商品价格(小数点后两位)good_idint对应的商品iddefault_image_urlvarchar商品图片对应的url3.2系统功能模块的概要设计3.2.1功能设计图图3-1功能设计图3.2.2用户模块基于Django的网上商城系统为提高用户体验,提供了两种登录方式,账号密码登录和用户名密码登录。用户可以根据个人喜好和习惯,选择相应的登录方式。在登录界面时,当用户输入相对应的信息时,会触发相应的前端代码对输入信息进行校验,减少不符合格式的信息与服务器进行交互,降低服务器的压力。在注册模块中,用户在注册界面输入相对应的账号密码后,为缓解某些机器人注册,设置了图片验证码来发送手机验证码,如果这些都验证无误后,用户才可进行注册。当用户注册成功后,会直接跳转至登录界面,让用户进行登录操作。在个人中心模块中用户可以设置自己的收货地址、查看自己手机号码。3.2.3商品模块商品模块将使用docker安装FastDFS拉取镜像和容器来存储商品图片,在运营后台,运营人员需要录入商品并编辑商品的详情信息,而商品的详情信息不是普通的文本,可以是包含了HTML语法格式的字符串。为了快速简单的让用户能够在页面中编辑带格式的文本,我们引入富文本编辑器。富文本即具备丰富样式格式的文本。后端人员将使用ckedtor富文本编辑器上传商品的描述、价格、图片、存货量等信息。3.2.4购物车模块购物车模块的功能主要包括购物车的增加、删除、修改、查看,购物车的全选,购物车的指定选定,以及购物车的合并,用户在没有登录的情况下,添加商品到购物车时,将购物里面的商品信息保存在session中,点结算时会跳转至登录界面,登录用户的购物车的商品信息会保存在redis中,登录用户和刚刚未登录的购物车进行合并,将所有商品信息保存在redis中。3.2.5商品搜索模块当用户在搜索框输入关键字后,我们要为用户提供相关的搜索结果,商品搜索使用Docker安装Elasticsearch及其扩展,使用haystack对接Elasticsearch,然后创建索引类,在索引类中所创建的字段,都可以借助haystack由elasticsearch搜索引擎查询。3.3系统功能实现3.3.1登录注册模块当进入登录页面时,用户可根据自身需求,选择不同的登录方式,第一种登录方式是手机号加密码的登录方式,第二种是用户名加密码的登录方式如下图所示:图3-2登录图如果登录时,输入的用户名或者密码为空,将弹出信息,让用户输入用户名和密码,避免登录操作对服务器产生的压力。当用户的信息通过前端初次过滤后,通过post请求将用户输入的用户名和密码传给后台后台API将获取的用户名和密码与Mysql数据库中用户信息进行比对,当用户不存在或密码错误时,则会抛出相对应的错误:if(error.response.status==400){this.error_pwd_message='用户名或密码错误';}当用户信息通过验证时,页面会跳转到商城主页面。图3-3注册图用户注册时,要求填入5-20的用户名,8-20位密码,然后再次确认密码(注册时后端校验完密码相同后,只存储一个密码),以及11位的手机号,上述信息都输入对之后,再输入图片验证码,如果图片验证码不清晰时可以再次点击进行刷新,该图片验证码是由后端随机生成的,生成后保存到redis数据库以及发送给前端,当用户点击获取短信验证码按钮时,会将填写的图片验证码,发送给后端服务器,服务器将前端发送的图片验证码,和后端存在redis中的图片验证码作比较,若相同,则发送短信验证码,短信验证码和图片存在redis中的有效期为3分钟,超过时间redis将删除短信验证码和图片验证码,此操作会减少redis数据库中存储数据的量,服务器在查询时速度会变快,同时为了缓解服务器的压力,若redis数据库中的短信验证码与用户输入的不一样时,界面会弹出验证码不一致的信息,让用户再次输入直至正确才能注册才能成功,短信验证码的按钮每60s才能点击1次,这样做的目的也是为防止用户恶意注册,给后端服务器带来不必要的压力,当所有信息都填写准确之后,点击注册,注册完成后直接跳转至登录界面。主要代码如下:ifdata["password"]!=data["password2"]:raiseserializers.ValidationError("两次输入的密码不一致")#判断短信验证码redis_conn=get_redis_connection("verify_codes")mobile=data["mobile"]sms_code=data["sms_code"]real_sms_code=redis_conn.get("sms_{}".format(mobile))ifreal_sms_codeisNone:raiseserializers.ValidationError("短信验证码已过期")ifsms_code!=real_sms_code.decode():raiseserializers.ValidationError("短信验证码错误")returndata3.3.2用户中心模块图3-4用户中心图用户可在用户中心中,可以查看自己的用户名,手机号以及可以设置自己的邮箱号,并且查看自己最近所浏览的商品的浏览记录,图3-5收货地址图用户在收货地址中,主要用到了省市区地址的三级联动,以及drf缓存,省市区的数据是经常被用户查询使用的,而且数据基本不变化,所以我们可以将省市区数据进行缓存处理,减少数据库的查询次数。用户可以新增自己收货人,收货地址选择自己所在的区市县,以及电话号码等,每个用户只能新增5个收货地址主要代码如下:defget_queryset(self):"""提供数据集"""ifself.action=="list":returnArea.objects.filter(parent=None)else:returnArea.objects.all()defget_serializer_class(self):"""提供序列化器"""ifself.action=="list":returnAreaSerializerelse:returnSubAreaSerializer3.3.3购物车版块图3-6购物车图如果用户是在登录情况下挑选商品,则购物车中的商品信息将存储在redis数据库中,用户还未登录之前放在购物车的商品是json数据,通过base64加密,再转换成字符串存储在session中,用户登录后后端服务器会将session中数据还原成json类型,将redis中的数据取出进行叠加,最后可以勾选用户自己想要的商品和数量进行结算3.3.4商品模块图3-7商品图该页面比较简单,是个静态页面,在商品页面中用户可以选择商品的的数据、版本、以及颜色,以json类型来加入购物车3.3.5商品搜索模块该模块通过docker安装了Elasticsearch,使用haystack对接Elasticsearch,搜索引擎通过关键字,来查找相关商品的名称、内容图3-8商品搜索图主要代码如下:text=indexes.CharField(document=True,use_template=True)id=indexes.IntegerField(model_attr='id')name=indexes.CharField(model_attr='name')price=indexes.CharField(model_attr='price')default_image_url=indexes.CharField(model_attr='default_image_url')comments=indexes.IntegerField(model_attr='comments')defget_model(self):"""返回建立索引的模型类"""returnSKUdefindex_queryset(self,using=None):"""返回要建立索引的数据查询集"""returnself.get_model().objects.filter(is_launched=True)3.4系统功能测试分析3.4.1系统测试的目的与意义系统的功能测试是系统能够顺利上线前的重要保证之一。系统的功能测试能够提前发现系统功能所存在的一系列问题,是保证系统正常运行的关键步骤之一。同时,系统测试报告也帮助程序员快速寻找出造成问题的原因,大大减少了问题检索的时间,提高了工作效率3.4.2系统功能测试本系统采用的测试方式为黑盒测试,主要是测试系统的功能是否正常运行,实现效果是否与预期效果是否具有一致性。由于数据库密码采用Django的认证系统加密密码,所以密码在数据库中为一大串加密字符,下面是对各板块进行的测试登录注册模块:表3.7登录注册测试表测试内容测试结果是否与预期一样账号密码登录账号密码正确时,跳转至首页,密码错误时,弹出错误信息是手机短信验证码发送验证码正确且未过期时,用户正常使用注册是用户注册当填写所有信息都正确时,用户正常注册然后跳转至登录界面。信息不正确时,弹出失败原因是用户中心模块:表3.8用户中心测试表测试内容测试结果是否与预期一样个人信息用户信息正常显示,并能查看自己浏览记录是收货地址正常新增5个收货地址,可修改地址信息是购物车模块:表3.9购物车测试表测试内容测试结果是否与预期一样购物车的增删改查购物车正常添加、删除、修改、查询商品是合并购物车用户登录后正常将未登录时的购物车和登录的购物车进行合并是商品模块:表3.10商品测试表测试内容测试结果是否与预期一样新增商品商品通过富文本编辑器正常新增是商品图片Docker容器正常使用,图片正常显示是商品信息商品价格、颜色、数量等信息正常显示是商品搜索模块:表3.11商品测试表测试内容测试结果是否与预期一样商品搜索用户通过关键字搜索商品正常显示是第4章结论在指导老师苏老师和企业老师两个多月的帮助下,完成此次的毕业设计,本次毕业设计主要主要分为下面的几个方面:实现了基于Django框架加密密码的的登录注册,可以实现短信验证码的注册,手机号或用户名的登录。实现了个人的信息和浏览商品记录的查看,并且可根据自己的需求设置和修改五个自己的收货地址。实现了购物车的增加、删除、修改、查询以及合并购物车的功能。实现了商品的查看及根据关键字搜索功能在本次毕业设计中,我学习到很多的相关知识,特别是怎么做毕业设计,要先做分析,需要用到什么技术,以及构造大体框架,在网上查找相关的知识和方法进行汇总,用什么技术的利弊,综合之后进行选择,然后进行开发,在遇到问题时,在网上查看相关资料,给网上遇到问题的作者留言,寻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论