news 2026/4/3 4:45:20

[免费]基于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/3/30 23:28:04

跨年夜武侠风拉满!周小飞林子祥共创《咏春》舞台名场面

辞旧迎新的璀璨灯火中,2026东方卫视跨年晚会迎来一场传统与潮流碰撞的高光时刻。国家武英级运动员、影武堂特训营讲师周小飞,携手“铁肺歌王”林子祥献上跨界合作舞台《咏春》,以刚劲洒脱的武术功底与默契十足的艺术配合,为全国观…

作者头像 李华
网站建设 2026/3/31 4:54:51

YOLOFuse适合深度学习初学者吗?是的,环境预装降低门槛

YOLOFuse:让多模态目标检测触手可及 在夜间监控的昏暗街角,普通摄像头拍出的画面满是噪点、几乎无法辨识行人;而在同一场景下,红外图像却能清晰捕捉人体热辐射轮廓。如果能让AI同时“看懂”这两种信息——一个靠颜色纹理&#xff…

作者头像 李华
网站建设 2026/4/3 3:08:39

YOLOFuse腾讯云插件开发:一键部署功能进行中

YOLOFuse腾讯云插件开发:一键部署功能进行中 在智能安防、自动驾驶和夜间监控等应用快速落地的今天,一个老生常谈却始终棘手的问题浮出水面:如何让目标检测系统在低光照、烟雾遮挡或极端天气下依然“看得清”?传统的基于可见光&am…

作者头像 李华
网站建设 2026/3/30 15:21:57

YOLOFuse使用指南:快速上手RGB+IR图像融合检测,训练推理全链路支持

YOLOFuse使用指南:快速上手RGBIR图像融合检测,训练推理全链路支持 在夜间监控、边境安防和自动驾驶等关键场景中,传统基于可见光(RGB)的目标检测系统常常因光照不足或恶劣天气而失效。一个典型的例子是:深…

作者头像 李华
网站建设 2026/4/1 9:45:59

YOLOFuse红外图像处理技巧:同名配对上传images与imagesIR注意事项

YOLOFuse红外图像处理技巧:同名配对上传images与imagesIR注意事项 在智能安防、自动驾驶和夜间监控等实际场景中,单一可见光摄像头在低光照、烟雾遮挡或恶劣天气下的表现往往捉襟见肘。你有没有遇到过这样的情况:白天清晰可辨的行人&#xf…

作者头像 李华
网站建设 2026/4/3 2:49:29

YOLOFuse软链接修复命令:ln -sf /usr/bin/python3 /usr/bin/python

YOLOFuse软链接修复命令:ln -sf /usr/bin/python3 /usr/bin/python 在部署AI模型的实战中,最令人沮丧的往往不是算法调优,而是环境配置阶段那些“看似无关紧要”的小问题——比如输入 python infer_dual.py 却提示“command not found”。这…

作者头像 李华