
deepseek毕业设计:基于Spark图书推荐系统 书籍推荐系统 协同过滤推荐算法 vue框架 django框架(源码+文档)✅
deepseek毕业设计:基于Spark图书推荐系统 书籍推荐系统 协同过滤推荐算法 vue框架 django框架(源码+文档)✅
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅
2、大数据毕业设计:2025年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅
1、项目介绍
技术栈:
Python语言、Spark技术、Django框架、vue框架、数据库、协同过滤推荐算法、HTML
2、项目界面
(1)系统首页
(2)图书详情页
(3)推荐页面
(4)图书列表
(5)图书分类
(6)后台管理
(7)注册登录
3、项目说明
前台用户通过登陆注册后进入系统
管理员可在后台管理所有抓取到的图书数据
首页分为左右两侧,右侧展示所有图书的分类,比如文学、流行、科技、经管、文化、生活等大类,大类下亦有许多小类;左侧展示基于用户的协同过滤推荐算法给用户推荐的10个图书数据,下方是根据图书评分推荐的高分书榜
图书查询模块,可以根据书名、书籍分类、作者和ISBN等信息筛选图书,底部带有一个分页器,以10本书籍信息为一页实现分页查询,降低后端数据库的压力
图书分类模块,展示了所有图书的大类小类,用户可以通过点击某一分类,实现快速查找合适自己口味的图书信息
当用户访问某一书籍详情时,页面展示了图书的封面、作者、译者、出版社、出品方、类型、出版年、页数、装帧类型、ISBN等基本信息,还展示了图书的内容简介以及大纲等;在此页面的底部最后部分,我们向用户推荐了5本基于物品的协同过滤算法推荐的图书结果
4、核心代码
from .models import *
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
from app.apps import AppConfig
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_book_list(request):
body = request.json
pagesize = body.get("pagesize", 10)
page = body.get("page", 1)
exclude_fields = ["pagesize", "page", "total", "keyword"]
query = {k: v for k, v in body.items() if k not in exclude_fields and v}
q = Q(**query)
if body.get("keyword"):
q = q & (
Q(title__icontains=body["keyword"])
| Q(author__icontains=body["keyword"])
| Q(isbn__icontains=body["keyword"])
)
objs = Book.objects.filter(q).order_by("id")
paginator = Paginator(objs, pagesize)
pg = paginator.page(page)
result = list(pg.object_list)
result = to_dict(result)
return JsonResponse({"total": paginator.count, "records": result})
def get_content_recommend_books(request):
# 基于物品推荐
body = request.json
id = body.get("id")
o = Book.objects.get(pk=id)
topK = 5
try:
ids = AppConfig.recommendProductsForProduct(o.id, topK)
result = Book.objects.filter(id__in=ids).order_by("?")
except:
result = Book.objects.filter(cat2=o.cat2).order_by("?")[:topK]
return JsonResponse(to_dict(result), safe=False)
def get_user_recommend_books(request):
# 基于用户推荐
topK = 10
try:
ids = AppConfig.recommendProductsForUser(request.user.id, topK)
result = Book.objects.filter(id__in=ids).order_by("?")
except:
result = Book.objects.order_by("?")[:topK]
return JsonResponse(to_dict(result), safe=False)
def get_high_score_books(request):
# 高分榜
result = Book.objects.filter(score__gt=8).order_by("?")[:10]
return JsonResponse(to_dict(result), safe=False)
def get_book_detail(request):
body = request.json
id = body.get("id")
o = Book.objects.get(pk=id)
History.objects.create(user=request.user, book=o)
return JsonResponse(to_dict([o])[0])
def get_book_category(request):
result = []
for (cat1,) in Book.objects.values_list("cat1").distinct():
item = dict(value=cat1, label=cat1, children=[])
result.append(item)
for (cat2,) in Book.objects.filter(cat1=cat1).values_list("cat2").distinct():
item2 = dict(value=cat2, label=cat2)
item["children"].append(item2)
return JsonResponse(result, safe=False)
5、源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看【用户名】、【专栏名称】、就可以找到我啦🍅
感兴趣的可以先收藏起来,点赞、关注不迷路,查看下方👇🏻👇🏻
更多推荐
所有评论(0)