大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django+Vue3在线商城系统(简易版)【论文+源码+SQL脚本】,分享下哈。
项目视频演示
https://www.bilibili.com/video/BV1a7iLBXEVi/
项目介绍
随着我国经济活力的不断提升和互联网的快速发展,信息的重要性正在显现出来。电子商务作为经济发展的重要一环取得了突飞猛进的发展。由于具有高效便捷的优点,网上购物已经成为一种不可或缺的新型生活方式,依据面向对象的软件工程方法的流程进行开发。系统采用了当下流行的Django来作为后端开发框架,使用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
