1、项目介绍

技术栈:
Python语言、Django框架、Echarts可视化、用户行为分析、HTML

2、项目界面

(1)商品销售前10的商品转化率分析
在这里插入图片描述

(2)商品数据

在这里插入图片描述

(3)商品每小时收藏量分析

在这里插入图片描述

(4)商品推荐

在这里插入图片描述

(5)商品每小时点击次数

在这里插入图片描述

(6)商品每小时收藏分析
在这里插入图片描述

(7)商品优惠券

在这里插入图片描述

(8)个人中心
在这里插入图片描述

(9)注册登录
在这里插入图片描述

(10)后台数据管理
在这里插入图片描述

3、项目说明

好的,以下是对该项目的简单重新描述:
项目概述
该项目是一个电商领域的数据分析与推荐系统,运用Python语言和Django框架搭建后端,借助Echarts实现数据可视化,同时结合用户行为分析,为用户提供个性化的商品推荐,还具备用户管理和后台数据管理等完善的功能。
技术栈
Python语言:后端开发语言,用于逻辑处理等。
Django框架:搭建后端服务,提供数据库操作等功能。
Echarts可视化:生成图表展示数据。
用户行为分析:分析用户浏览、点击等行为,实现精准推荐。
HTML:构建网页基本结构。
功能模块
商品销售数据分析:展示商品销售前10的转化率、商品数据列表等,帮助商家了解销售情况。
用户行为数据分析:分析商品每小时的收藏量、点击次数等,挖掘用户行为规律。
商品推荐:基于用户历史浏览等行为,推荐可能感兴趣的商品。
优惠券管理:商家可设置和管理商品优惠券,刺激用户消费。
用户管理:包含个人中心、注册登录等功能,方便用户管理账号和购物。
后台数据管理:管理员可管理商品、用户、订单等数据,进行数据统计分析,为运营提供支持。
项目特点
数据驱动决策:通过数据分析帮助商家洞察市场和用户需求,优化运营策略。
个性化推荐:提升用户体验,促进用户购买。
后台功能强大:一站式管理电商运营,实时掌握业务动态。
界面友好:前端交互流畅,适配多终端设备,满足不同用户需求。

4、核心代码

from django.shortcuts import render, get_object_or_404, reverse, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import login_required
# Create your views here.
from . import models
from django.db.models import Q
import os
from dianshan.settings import BASE_DIR
import xlrd

@login_required
def index(request):
    if request.method == 'GET':
        results = models.Case_item.objects.all()
        Search = request.GET.get('Search','')
        if Search:
            results = models.Case_item.objects.filter(Q(name__icontains=Search)|Q(jianjie__icontains=Search))

        return render(request, 'dianshan/table.html',locals())


@login_required
def lishijilv(request):
    if request.method == 'GET':
        results = models.Lishi.objects.filter(user=request.user)
        return render(request, 'dianshan/lishijilv.html',locals())


@login_required
def my_youhuijuan(request):
    if request.method == 'GET':
        results = models.YouHuiJuan.objects.filter(user=request.user)
        return render(request, 'dianshan/youhuijuan.html',locals())

@login_required
def my_shoucang(request):
    if request.method == 'GET':
        results = models.ShouChuang.objects.filter(user=request.user)
        return render(request, 'dianshan/shoucang.html',locals())


@login_required
def juhe_shoucang(request):
    if request.method == 'GET':
        datas = models.ShouChuang.objects.all()
        li1 = [i.name.name for i in datas]
        results = []
        for ii in list(set(li1)):
            dicts = {}
            dicts['name'] = ii
            dicts['num'] = li1.count(ii)
            results.append(dicts)

        return render(request, 'dianshan/juhe_shoucang.html',locals())





@login_required
def xiaoshishoucang(request):
    if request.method == 'GET':
        return render(request, 'dianshan/xiaoshishoucang.html',locals())
    elif request.method == 'POST':
        data1 = []
        names = []
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:xiaoshishoucang')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:xiaoshishoucang')
        title = table.row_values(0, start_colx=0, end_colx=None)
        if '商品名' in title and '销量' in title and len(title) == 2:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                names.append(datas1[0])
                data1.append(datas1[1])
        return render(request, 'dianshan/xiaoshishoucang.html',locals())


@login_required
def xiaoshi_dianji(request):
    if request.method == 'GET':
        return render(request, 'dianshan/xiaoshi_dianji.html',locals())
    elif request.method == 'POST':
        data1 = []
        names = []
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:xiaoshi_dianji')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:xiaoshi_dianji')
        title = table.row_values(0, start_colx=0, end_colx=None)
        if '商品名' in title and '销量' in title and len(title) == 2:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                names.append(datas1[0])
                data1.append(datas1[1])
        return render(request, 'dianshan/xiaoshi_dianji.html',locals())



@login_required
def xiaoshi_top10(request):
    if request.method == 'GET':
        return render(request, 'dianshan/xiaoshi_top10.html',locals())
    elif request.method == 'POST':
        data1 = []
        names = []
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:xiaoshi_top10')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:xiaoshi_top10')
        title = table.row_values(0, start_colx=0, end_colx=None)
        if '商品名' in title and '转化率' in title and len(title) == 2:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                names.append(datas1[0])
                data1.append(datas1[1])
        return render(request, 'dianshan/xiaoshi_top10.html',locals())




@login_required
def tuijian(request):
    if request.method == 'GET':
        return render(request, 'dianshan/tuijian.html',locals())
    elif request.method == 'POST':
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:tuijian')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:tuijian')
        title = table.row_values(0, start_colx=0, end_colx=None)
        results = []
        if '商品名' in title and '商品价格' in title  and '商品数量' in title  and '商品评分' in title and len(title) == 4:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                dicts = {}
                dicts['name'] = datas1[0]
                dicts['price'] = datas1[1]
                dicts['num'] = datas1[2]
                dicts['pingfen'] = datas1[3]
                results.append(dicts)
        return render(request, 'dianshan/tuijian.html',locals())




@login_required
def leibie(request):
    if request.method == 'GET':
        return render(request, 'dianshan/leibie.html',locals())
    elif request.method == 'POST':
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:leibie')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:leibie')
        title = table.row_values(0, start_colx=0, end_colx=None)
        results = []
        if '商品名' in title and '商品类别' in title and len(title) == 2:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                dicts = {}
                dicts['name'] = datas1[0]
                dicts['type'] = datas1[1]
                results.append(dicts)
        return render(request, 'dianshan/leibie.html',locals())






@login_required
def add_youhuanjuan(request):
    if request.method == 'GET':
        id = request.GET.get('id','')
        models.YouHuiJuan.objects.create(
            name=get_object_or_404(models.Case_item,pk=id),
            user = request.user
        )
        models.Lishi.objects.create(
            name=get_object_or_404(models.Case_item,pk=id),
            user = request.user
        )
        return redirect('web:index')

@login_required
def add_shoucang(request):
    if request.method == 'GET':
        id = request.GET.get('id','')
        models.ShouChuang.objects.create(
            name=get_object_or_404(models.Case_item,pk=id),
            user = request.user
        )
        models.Lishi.objects.create(
            name=get_object_or_404(models.Case_item,pk=id),
            user = request.user
        )
        return redirect('web:index')


@login_required
def my_dingdan(request):
    if request.method == 'GET':
        results = models.DingDan.objects.filter(user=request.user)
        return render(request, 'dianshan/my_dingdans.html',locals())
    elif request.method == 'POST':
        f = request.FILES['files']
        print(f)
        if not f:
            return redirect('web:my_dingdan')
        dir = os.path.join(os.path.join(str(BASE_DIR) + str(os.sep) + 'web', 'static'), 'profiles')
        destination = open(os.path.join(dir, f.name),
                           'wb+')
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        data = xlrd.open_workbook(os.path.join(dir, f.name))
        table = data.sheets()[0]
        nrows = table.nrows
        if not nrows:
            return redirect('web:my_dingdan')
        title = table.row_values(0, start_colx=0, end_colx=None)
        if '商品名' in title and '总价' in title and '购买数量' in title and len(title) == 3:
            for i in range(1,nrows):
                datas1 = table.row_values(i, start_colx=0, end_colx=None)
                models.DingDan.objects.create(
                    name=datas1[0],
                    price = datas1[1],
                    num = datas1[2],
                    user = request.user
                )

        return redirect('web:my_dingdan')

@login_required
def myuser(request):
    if request.method == 'GET':
        datas = get_object_or_404(models.Users, username=request.user.username)
        return render(request, 'dianshan/user_all.html', locals())

@login_required
def myuser_update(request):
    if request.method == 'GET':
        datas = get_object_or_404(models.Users,username=request.user.username)
        return render(request, 'dianshan/myuser_update_s.html', locals())
    elif request.method == 'POST':
        data = request.POST
        username = data.get('username','')
        jianjie = data.get('jianjie','')
        set = data.get('set','')
        age = data.get('age', '')
        if username == ''  or jianjie == '' or set == '' or age == '':
            datas = get_object_or_404(models.Users, username=request.user.username)
            return render(request, 'dianshan/myuser_update_s.html', locals())
        test = get_object_or_404(models.Users, username=request.user.username)
        test.username = username
        test.jianjie = jianjie
        test.set = set
        test.age = age
        test.save()
        return redirect('web:myuser')

5、源码获取方式

🍅🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐