100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 基于python的django框架数码电子产品销售交易商城电商平台设计

基于python的django框架数码电子产品销售交易商城电商平台设计

时间:2021-12-18 13:38:33

相关推荐

基于python的django框架数码电子产品销售交易商城电商平台设计

目录

摘 要 I

目录 III

第一章 绪论 1

1.1 课题研究背景及意义 1

1.2 国内外研究现状 2

1.3 本文的主要工作 3

第二章 技术选型 4

2.1 Python 4

2.2 Django 5

2.3 MySQL 6

2.4 Django Rest Framework 7

2.5 Vue 8

第三章 系统分析 9

3.1 可行性分析 9

3.2 系统需求分析 10

3.2.1 业务需求分析 10

3.2.2 用户需求 11

3.2.3 功能需求分析 12

3.2.4 非功能需求分析 14

第四章 总体设计 16

4.1 总体功能模块设计 16

4.2 数据库设计 18

4.2.1 数据表结构 18

4.2.2 数据表字段 18

第五章 详细设计与实现 25

5.1 用户模块 25

5.2 商品模块 32

5.3 用户操作模块 41

5.4 交易模块 44

5.5 后台模块 51

5.6 其他模块 52

第六章 系统测试与部署 54

6.1 测试环境 54

6.2 系统测试 54

6.3 测试内容 55

6.4 测试结果 58

第七章 全文总结 59

参考文献 60

致谢 61

第三章 系统分析

3.1 可行性分析

可行性研究的目的就是用最小的代价在尽可能短的时间里确定问题是否能解决。本章将从以下四个方面去阐述该项目的可行性。

从经济可行性的角度分析,该项目的实施不涉及物力成本,只涉及人力的成本。若该项目是市场上的某个商业项目,确定项目是否值得投资开发,即要分析在整个软件生存周期中所花费的代价和效益之间的度量。本课题属于毕业设计,不涉及成本和效益,默认可行。

从技术可行性角度讲,如今要实现一个电商网站,技术已经不是问题,本项目中将使用开源免费的Python生态中的多个组件去完成这样一个电商网站,使用Django去实现网站基础的搭建、使用DRF去实现网站向前端所提供的各个接口、使用Vue实现前端页面的制作,期间设计的第三方登录、第三方支付都可以使用第三方开放平台所提供的API来实现,在项目部署时,本项目同样使用开源免费的Nginx容器。以上所提到的各种技术都已相对成熟,并且在行业内也属于领先水平,所以在技术上,是完全行得通的。

从操作可行性上分析,本项目开发阶段是在Windows环境下实施的,在这个环境下各种操作都非常方便,各种开发工具一应俱全,对于编写代码也十分便利,是十分友好的开发环境。项目编码结束后将会部署在Linux环境下,这个环境对于Python的支持十分到位,同时其灵活性和稳定性也相较于Windows更高,操作也十分便捷。所以在操作可行性上,是可行的。

最后从法律可行性上讲,本项目并不涉及与国家安全相关的一些信息,也不会危害社会。在项目的安全性得到保障的条件下,也不会泄露用户的个人信息。本项目属于B2C的电商网站,所出售的产品都是商家自己的产品,这也免去了很多C2C电商所产生的法律问题。在法律上,项目是可行的。

综上所述,本项目在经济可行性、技术可行性、操作可行性和法律可行性上都行得通,是值得去实施的一个项目。

3.2 系统需求分析

软件需求分析是软件开发期的第一个阶段,是软件生存周期最重要的一步,是关系到软件开发成败的关键步骤。它在问题定义和可行性研究阶段之后进行。它的基本任务是准确地回答"系统必须做什么?"这个问题。虽然在可行性研究阶段粗略了解了用户的需求,至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,一个微小的错漏都可能导致误解或铸成系统的大错,在纠正时付出巨大的代价。因而可行性研究并不能代替需求分析,它实际上并没有准确地回答"系统必须做什么"这个关键问题。

需求分析是整个软件生命周期中非常重要的阶段,决定着软件项目的成败,在这个阶段本章将从业务需求、用户需求、功能需求和非功能需求这四个方面去阐述项目的需求问题。

3.2.1 业务需求分析

业务需求主要是面向投资人的需求,通过客户访谈的方式可以获取项目的业务需求。客户访谈是一个直接与客户交流的过程,既可以了解高层用户对软件的要求,也可以直接听取用户的呼声。

通过带入甲方角色来分析项目的业务需求。

甲方需要这样一个平台,在这个平台上,作为直接向用户出售商品商户,可以轻松地管理商品,这里面包括对商品的分类管理、首页头图投放等问题。在此之上,甲方也需要方便地管理用户和订单,若用户对于账户或订单有一些变更,作为管理者的甲方管理员可以轻松的进行管理。还有其最基本的功能,要完成一个或多个商品的交易流程,这个过程一定要是安全的。

业务需求分析是客户或机构组织层面的需求分析。由于这一些人并不是专业的技术人员,所以我们在与他们进行沟通是要注意引导和提取他们对系统业务需求。

项目的系统目标是构建一个B/S架构的电子设备线上商城,管理员可以进行用户的权限管理、信息管理,还可以进行交易管理和订单管理,也可以进行商品的添加、删除、修改等操作。用户可以注册登录商城账号,浏览商品,并对商品进行过滤筛选,完成一个完整的交易。实现以上功能即满足基本业务需求。

3.2.2 用户需求

用户需求是在软件设计和开发的过程中以用户为核心,进心调查与分析,发掘用户的具体要求。在本系统中,有以下两种重要角色,用户和管理员。作为用户,主要任务是访问网站进行商品购买和其他操作,而作为管理员,主要是对于数据库中的商品、订单、用户进行管理操作。项目中将系统划分为以下几个模块,这也是Django提倡开发者这样做的,以模块的方式划分职责,将系统划分为商品模块、交易模块、用户操作模块、用户模块和后台模块。

在本项目中,配合使用DRF,使用REST风格的API使接口更加通俗易懂且易于管理维护。

在本项目中,主要由四个模块组成,这四个模块分别是用户模块、用户操作模块、交易模块和商品模块,本文转载自http://www.biyezuopin.vip/onews.asp?id=13089这四个模块相互协作,完成网站的主体功能,具体主体功能模块设计图如图4-2:

图4-2 功能模块设计图

from django.shortcuts import render# Create your views here.from django.contrib.auth.backends import ModelBackendfrom django.contrib.auth import get_user_modelfrom django.db.models import Qfrom rest_framework.mixins import CreateModelMixinfrom rest_framework import viewsetsfrom .serializers import SmsSerializer, UserRegSerializer, UserDetailSerializerfrom rest_framework.response import Responsefrom rest_framework import statusfrom random import choicefrom rest_framework import mixinsfrom rest_framework import permissionsfrom rest_framework import authenticationfrom rest_framework_jwt.authentication import JSONWebTokenAuthenticationfrom rest_framework_jwt.serializers import jwt_encode_handler, jwt_payload_handlerfrom utils.yunpian import YunPianfrom .models import VerifyCodeUser = get_user_model()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 userexcept Exception as e:return Noneclass SmsCodeViewset(CreateModelMixin, viewsets.GenericViewSet):"""发送短信验证码"""serializer_class = SmsSerializerdef generate_code(self):"""生成四位数字的验证码:return:"""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("")code = self.generate_code()# sms_status = yun_pian.send_sms(code=code, mobile=mobile)sms_status = {}sms_status["code"] = 0if 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)class UserViewset(CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet):"""用户(用户注册,用户获取)"""serializer_class = UserRegSerializerqueryset = User.objects.all()authentication_classes = (authentication.SessionAuthentication, JSONWebTokenAuthentication)# 在用户注册的时候,不可以使用这种permission# permission_classes = (permissions.IsAuthenticated, )# 通过重写get_permissions函数,动态的加载permission_classesdef get_permissions(self):if self.action == "retrieve":return [permissions.IsAuthenticated()]elif self.action == "create":return []return []# 通过重写get_serializer_class函数,动态加载Serializerdef get_serializer_class(self):if self.action == "retrieve":return UserDetailSerializerelif self.action == "create":return UserRegSerializerreturn UserDetailSerializerdef create(self, request, *args, **kwargs):serializer = self.get_serializer(data=request.data)serializer.is_valid(raise_exception=True)user = self.perform_create(serializer)re_dict = serializer.datapyload = jwt_payload_handler(user)re_dict["token"] = jwt_encode_handler(pyload)re_dict["name"] = user.name if user.name else user.usernameheaders = self.get_success_headers(serializer.data)return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)# 重写get_object方法,在url中随意请求一个,都会返回当前用户def get_object(self):return self.request.userdef perform_create(self, serializer):return serializer.save()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。