博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅

2、最全计算机专业毕业设计选题大全(建议收藏)✅

1、项目介绍

基于协同过滤的商品推荐系统

python语言+ Django框架+ vue框架 +scrapy 爬虫框架+协同过滤算法、Echarts可视化、HTML

爬虫抓取京东商品、商品检索、商品详情、加入购物车、结算购买
查看历史订单、个人中心、基于用户历史浏览来推荐商品、后台管理商品数据

2、项目界面

(1)商品数据可视化大屏分析

在这里插入图片描述

(2)商品数据列表

在这里插入图片描述

(3)商品详情页面
在这里插入图片描述

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

(5)购物车
在这里插入图片描述

(6)注册登录界面
在这里插入图片描述

(7)数据采集页面

在这里插入图片描述

3、项目说明

一、技术栈
Python语言:作为后端开发的主要语言,用于编写业务逻辑、数据处理和接口实现等。
Django框架:一个开源的、高级的Python Web框架,用于搭建后端服务。它提供了丰富的功能和组件,能够快速开发出稳定、可靠的Web应用,包括数据库操作、用户认证、模板渲染等。
Vue框架:一个渐进式JavaScript框架,用于构建前端用户界面。Vue具有易于上手、灵活高效的特点,能够实现页面的动态交互和组件化开发,提升用户体验。
Scrapy爬虫框架:一个快速、高层次的屏幕抓取和Web抓包框架,用于从京东等网站爬取商品数据。它提供了强大的功能,如请求调度、数据提取、数据存储等,能够高效地获取所需的网页内容和数据。
协同过滤算法:一种常用的推荐算法,根据用户的历史行为和偏好,找到与目标用户相似的其他用户或与目标商品相似的其他商品,从而为用户推荐可能感兴趣的商品。
Echarts可视化:一个基于JavaScript的开源可视化图表库,用于生成各种精美的图表,如柱状图、折线图、饼图、地图等。在该项目中,用于实现商品数据的可视化展示,帮助用户和管理人员更直观地了解商品信息和市场趋势。
HTML:用于构建网页的基本结构,定义页面的布局、内容和元素等。与CSS和JavaScript一起,构成前端页面的核心技术。

二、功能模块
商品数据可视化大屏分析:通过Echarts等可视化工具,将商品数据以图表的形式展示在大屏上,如商品销量趋势图、商品价格分布图、不同省份商品数量分布地图等。帮助管理人员快速了解商品的市场表现和地域分布情况,为决策提供直观依据。
商品数据列表:以表格形式展示商品的基本信息,如商品名称、价格、销量、库存等。用户可以方便地浏览和筛选商品,查找自己感兴趣的商品。同时,表格中还可以设置排序和分页功能,提高数据的可读性和可用性。
商品详情页面:展示商品的详细信息,包括商品图片、描述、规格参数、价格、库存、用户评价等。用户可以在此页面深入了解商品的细节,做出购买决策。此外,页面还提供加入购物车、立即购买等操作按钮,方便用户进行购买操作。
后台数据管理:为管理员提供后台管理界面,用于管理商品数据、用户数据、订单数据等。管理员可以在此添加、修改、删除商品信息,查看和处理用户订单,管理用户账号和权限等。同时,后台还提供数据统计和分析功能,帮助管理员了解系统的运行情况和业务数据。
购物车:用户可以将感兴趣的商品加入购物车,方便后续统一结算购买。购物车页面展示已加入的商品列表、数量、价格等信息,用户可以对购物车中的商品进行修改数量、删除等操作。同时,提供结算按钮,用户点击结算后进入支付流程,完成购买操作。
注册登录界面:用户可以通过注册账号或使用已有账号登录系统。注册时需要填写用户名、密码、邮箱等基本信息,登录时输入用户名和密码进行身份验证。登录成功后,用户可以享受个性化的推荐服务和购物体验。
数据采集页面:用于展示和管理爬虫采集到的商品数据。管理员可以在此查看数据采集的状态、进度和结果,对采集到的数据进行审核和处理。同时,还可以设置爬虫的参数和任务,控制数据采集的频率和范围,确保数据的及时性和准确性。

4、核心代码


from .models import *
import json
from django.http.response import HttpResponse
from django.shortcuts import render
from django.http import JsonResponse
from datetime import datetime, time
from django.core.paginator import Paginator
from django.db.models import Q
import simplejson
from collections import Counter
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Map, Grid, Bar, Line, Pie, TreeMap, WordCloud
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode
from pyecharts.options.charts_options import MapItem
from django.db.models import Q, Count, Avg, Min, Max
from pyecharts.globals import SymbolType


def to_dict(l, exclude=tuple()):
    # 将数据库模型 变为 字典数据 的工具类函数
    def transform(v):
        if isinstance(v, datetime):
            return v.strftime("%Y-%m-%d %H:%M:%S")
        return v

    def _todict(obj):
        j = {
            k: transform(v)
            for k, v in obj.__dict__.items()
            if not k.startswith("_") and k not in exclude
        }
        return j

    return [_todict(i) for i in l]


def get_list(request):
    # 商品列表
    body = request.json
    pagesize = body.get("pagesize", 10)
    page = body.get("page", 1)
    orderby = body.get("orderby", "-id")
    notin = ["pagesize", "page", "total", "cateName", "orderby", "id__ne"]
    query = {
        k: v for k, v in body.items() if k not in notin and (v != "" and v is not None)
    }
    q = Q(**query)
    objs = goods.objects.filter(q).order_by(orderby)
    if body.get("id__ne"):
        objs = objs.exclude(id=body["id__ne"])
    breadcrumb = []
    for i in range(1, 4):
        cat = query.get(f"cat{i}")
        if cat:
            breadcrumb.append(cat)
    cateNames = []
    if not query.get("cat1"):
        cateNames = [
            i[0] for i in goods.objects.filter(q).values_list("cat1").distinct()
        ]
    elif not query.get("cat2"):
        cateNames = [
            i[0] for i in goods.objects.filter(q).values_list("cat2").distinct()
        ]
    elif not query.get("cat3"):
        cateNames = [
            i[0] for i in goods.objects.filter(q).values_list("cat3").distinct()
        ]
    paginator = Paginator(objs, pagesize)
    pg = paginator.page(page)
    result = to_dict(pg.object_list)
    return JsonResponse(
        {
            "total": paginator.count,
            "result": result,
            "cateNames": cateNames,
            "breadcrumb": breadcrumb,
        }
    )


def get_detail(request):
    # 商品详情
    body = request.json
    id = body.get("id")
    o = goods.objects.get(pk=id)
    his = (
        goodsHistory.objects.filter(userId=request.user.id)
        .order_by("-createTime")
        .first()
    )
    if not (his and his.goodsId == o.id):
        goodsHistory(userId=request.user.id, goodsId=o.id).save()
    return JsonResponse(to_dict([o])[0])


def history_recommand(request):
    goodsIds = (
        goodsHistory.objects.filter(userId=request.user.id)
        .values_list("goodsId")
        .distinct()
    )
    produces = []
    # 根据历史查看记录推荐
    if goodsIds:
        goodsIds = [i[0] for i in goodsIds]
        cates = [
            i[0] for i in goods.objects.filter(id__in=goodsIds).values_list("cat3")
        ]
        most_common_cates = list(dict(Counter(cates).most_common(2)).keys())
        produces = goods.objects.filter(cat3__in=most_common_cates).order_by("?")[:5]
    # 没有记录则随机推荐
    else:
        produces = goods.objects.order_by("?")[:5]
    return JsonResponse(to_dict(produces), safe=False)


def make_order(request):
    # 新增订单
    data = request.json
    o = Order.objects.create(
        userId=request.user.id,
        name=data.get("name"),
        phone=data.get("phone"),
        address=data.get("address"),
        remark=data.get("remark"),
        price=float(data.get("price")),
        total=int(data.get("total")),
        products=json.loads(data.get("products")),
    )
    return JsonResponse({"ok": o.id})



🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅

点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐