news 2026/9/9 13:18:14

[免费]基于Python的Django+Vue3在线商城系统(简易版)【论文+源码+SQL脚本】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[免费]基于Python的Django+Vue3在线商城系统(简易版)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django+Vue3在线商城系统(简易版)【论文+源码+SQL脚本】,分享下哈。

项目视频演示

https://www.bilibili.com/video/BV1a7iLBXEVi/

项目介绍

随着我国经济活力的不断提升和互联网的快速发展,信息的重要性正在显现出来。电子商务作为经济发展的重要一环取得了突飞猛进的发展。由于具有高效便捷的优点,网上购物已经成为一种不可或缺的新型生活方式,依据面向对象的软件工程方法的流程进行开发。系统采用了当下流行的Django来作为后端开发框架,采用B/S架构进行开发,使用Mysql作为系统的存储模块来进行开发。系统设计包括管理员和普通用户两个角色用户,既为普通用户提供了商品浏览以及下单购买的服务,也让管理员有用户维护、商品维护、订单维护的平台。在系统开发完成后,采用完善的测试用例对系统平台进行测试,确保该系统是一个的各项功能都能够正常运行、性能良好的商城平台。

系统展示

部分代码

import json import time from django.contrib.auth import logout, login, authenticate from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.authentication import SessionAuthentication from rest_framework.authentication import BasicAuthentication from rest_framework.permissions import IsAuthenticated from .models import * from .form import * from .pays import get_pay from .serializers import OrderInfosSerializer, CartInfosSerializer class MySessionAuthentication(SessionAuthentication): ''' 自定义SessionAuthentication,取消CSRF验证 ''' def authenticate(self, request): user = getattr(request._request, 'user', None) if not user or not user.is_active: return None return (user, None) class loginView(APIView): ''' 用户登录与注册 ''' # 取消所有认证 authentication_classes = [] permission_classes = [] def post(self, request): context = {'state': 'fail', 'msg': '注册或登录失败'} json_str = json.loads(request.body.decode()) infos = LoginModelForm(data=json_str) d = infos.data username = d['username'] password = d['password'] last_login = '' # 用户存在则进行登录验证 if User.objects.filter(username=username).first(): user = authenticate(username=username, password=password) if user: login(request, user) last_login = user.last_login context = {'state': 'success', 'msg': '登录成功'} else: # 用户不存在进行用户注册 context = {'state': 'success', 'msg': '注册成功'} d = dict(username=username, password=password, is_staff=1, is_active=1) user = User.objects.create_user(**d) user.save() login(request, user) context['username'] = username context['last_login'] = last_login return Response(context) class logoutView(APIView): ''' 退出用户登录 ''' authentication_classes = [MySessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def post(self, request): context = {'state': 'fail', 'msg': '退出失败'} # 使用内置函数logout退出用户登录状态 if request.user.username: logout(request) context = {'state': 'success', 'msg': '退出成功'} return Response(context) class shopperView(APIView): ''' 个人中心 ''' authentication_classes = [MySessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def get(self, request): context = {'state': 'success', 'msg': '获取成功', 'data': {}} t = request.GET.get('t', '') payTime = request.session.get('payTime', '') cart_id=request.session.get('cart_id') print('cart_id:',cart_id) # 从Session获取并处理已支付的订单信息,写入订单信息表 if payTime: payInfo = request.session.get('payInfo', '') OrderInfos.objects.create(**payInfo) for i in cart_id: CartInfos.objects.filter(id=i).update(buy=True) del request.session['payTime'] del request.session['payInfo'] del request.session['cart_id'] # 根据当前用户查询用户所有订单信息 orders = OrderInfos.objects.filter(user_id=request.user.id).order_by('-created').all() context['data']['orders'] = OrderInfosSerializer(instance=orders, many=True).data return Response(context) class shopcartView(APIView): ''' GET:获取购物车列表 POST:商品加入购物车 ''' authentication_classes = [MySessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def get(self, request): context = {'state': 'success', 'msg': '获取成功', 'data': []} # 根据当前用户信息查找对应购物车信息 c = CartInfos.objects.filter(user_id=request.user.id,buy=False).all() context['data'] = CartInfosSerializer(instance=c, many=True).data return Response(context) def post(self, request): context = {'state': 'fail', 'msg': '加购失败'} json_str = json.loads(request.body.decode()) print('json_str',json_str) id = json_str.get('id', '') quantity = json_str.get('quantity', 1) userID = request.user.id commodityInfos = CommodityInfos.objects.filter(id=id).first() # 根据请求信息写入购物车 # if id and commodityInfos and quantity: d = dict(commodityInfos_id=commodityInfos, user_id=userID, quantity=quantity, buy=False) print('d:',d) f = dict(commodityInfos_id=commodityInfos, user_id=userID,buy= False) # CartInfos.objects.update_or_create(d, **f) CartInfos.objects.create(**d) context = {'state': 'success', 'msg': '加购成功'} return Response(context) class paysView(APIView): ''' 支付接口 ''' authentication_classes = [MySessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def post(self, request): context = {'state': 'fail', 'msg': '支付失败', 'data': ''} json_str = json.loads(request.body.decode()) print('json_str',json_str) total = json_str.get('total', 0) cart_id=json_str.get('cart_id') total = float(str(total).replace('¥', '')) if total: out_trade_no = str(int(time.time())) print(out_trade_no) user_id = request.user.id payInfo = dict(price=total, user_id=user_id, state='已支付') request.session['payInfo'] = payInfo request.session['payTime'] = out_trade_no request.session['cart_id'] = cart_id # return_url为前端的路由地址 # 如果无法确认路由地址,前端可以通过请求参数传递 data = 'http://localhost:8010/#/shopper' #data = get_pay(out_trade_no, total, return_url) #print('testdata',data) context = {'state': 'success', 'msg': '支付成功', 'data': data} return Response(context) class deleteView(APIView): ''' 购物车删除商品 ''' authentication_classes = [MySessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def post(self, request): context = {'state': 'success', 'msg': '删除成功'} json_str = json.loads(request.body.decode()) username = json_str.get('username', '') carId = json_str.get('carId', '') # 根据请求信息删除购物车信息 if username: CartInfos.objects.filter(user_id=request.user.id).delete() elif carId: CartInfos.objects.filter(id=carId).delete() else: context = {'state': 'fail', 'msg': '删除失败'} return Response(context)

源码下载

链接:https://pan.baidu.com/s/1z-B4vig-tRfsatt4Mwsrig
提取码:1234

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 6:58:52

python餐厅点餐及餐桌推荐系统vue

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/9/3 1:13:25

还在用AI写论文被查AIGC?8款神器维普查重一把过!

还在踩这些AI写论文的坑?你可能离“学术警告”只差一步 还在用ChatGPT写论文初稿,结果维普查重AIGC检测直接标红? 还在熬夜改AI生成的内容,却越改越乱、逻辑断层? 还在因为论文重复率超标,被导师打回重写第…

作者头像 李华
网站建设 2026/9/3 1:13:20

tquery.dll文件损坏丢失找不到 打不开程序 下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/9/8 1:56:40

导师推荐9个AI论文平台,助你轻松搞定本科毕业论文!

导师推荐9个AI论文平台,助你轻松搞定本科毕业论文! AI 工具如何改变论文写作的未来 在当前高校教育中,本科生的毕业论文写作已成为一项重要而复杂的任务。面对繁重的文献阅读、严谨的逻辑构建以及严格的格式要求,许多学生感到力不…

作者头像 李华
网站建设 2026/9/3 5:35:30

springboot宠物销售商城网站

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/9/4 17:00:46

YOLOFuse双流输入设计原理:RGB与IR并行处理机制揭秘

YOLOFuse双流输入设计原理:RGB与IR并行处理机制揭秘 在夜间监控、自动驾驶或复杂气象条件下的目标检测任务中,仅依赖可见光图像的模型往往力不从心。光线不足、烟雾遮挡、反光干扰等问题会严重削弱传统视觉系统的感知能力。这时候,单模态的“…

作者头像 李华