基于Python + Django + mysql的协同推荐算法的电影推荐系统

    本系统一共分为前台系统功能和后台系统功能两个模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访在同一数据库中分别对应不同的数据表。根据以上的功能分析,系统在前后台两个模块的基础上每一个模块又分为几个子模块。

一、前台系统功能模块设计
1、会员注册模块:填写并提交个人信息,通过验证成功注册成为会员;
2、会员登录模块:注册后进行会员登录,便于进行之后的购买商品操作;
3、电影推荐模块:通过热销电影、按影片类型分类,分区域和页面展示网站的热销、新品等,根据用户浏览记录进行电影推荐,基于协调推荐算法推荐;
4、会员购票模块:通过对电影信息的浏览,选出自己喜爱的电影并选择购买,随后可提交评价或在购物车中查看;
5、评价查询模块:用户通过查看评价了解自己当前评价信息及所有评价记录。
三、后台系统功能模块设计
1、用户管理模块:该模块可以对用户的信息进行修改和删除;
2、电影分类管理模块:电影分类模块下分为两个子模块,一是一级分类管理,是通过影片类型对电影进行分类,二是二级分类管理,是通过国家地区的不同对电影归类;
3、电影信息管理模块:该模块可实现对电影基本信息的添加、修改和删除;
4、评价管理模块:管理员查看评价详细信息,删除评价信息,并对评价进行处理。

from django.views.generic.base import View
from datetime import datetime
from django.shortcuts import render
from django.http import HttpResponse
from django.core.paginator import PageNotAnInteger,Paginator

from operation.models import UserFavorite,UserComments,UserBrowse,UserRatings
from movieinfo.models import Movie,MovieParticulars

class AddFavView(View):
“”“用户收藏和取消收藏”""
def post(self,request):
# 防止后边int(fav_id)时出错
id=request.POST.get(‘fav_id’,0)
if not request.user.is_authenticated:
# 未登录时返回json提示未登录,跳转到登录页面是在ajax中做
return HttpResponse(’{“status”:“fail”,“msg”:“用户未登录”}’, content_type=‘application/json’)
exist_record=UserFavorite.objects.filter(user=request.user, movie_id=int(id))
if exist_record:
# 如果记录已经存在,表示用户要取消收藏
exist_record.delete()
movie=Movie.objects.get(id=int(id))
movie.fav_nums -= 1
if movie.fav_nums < 0:
movie.fav_nums = 0
movie.save()
return HttpResponse(’{“status”:“success”,“msg”:“收藏”}’, content_type=‘application/json’)
else:
user_fav=UserFavorite()
if int(id) > 0:
user_fav.movie_id=int(id)
user_fav.user=request.user
user_fav.save()
movie = Movie.objects.get(id=int(id))
movie.fav_nums += 1
movie.save()
return HttpResponse(’{“status”:“success”,“msg”:“已收藏”}’, content_type=‘application/json’)
else:
return HttpResponse(’{“status”:“success”,“msg”:“收藏出错”}’, content_type=‘application/json’)

添加评论

class AddCommentsView(View):
def post(self, request):
if not request.user.is_authenticated:
return HttpResponse(’{“status”:“fail”, “msg”:“用户未登录”}’, content_type=‘application/json’)
movie_id = request.POST.get(‘movie_id’, 0)
comments = request.POST.get(‘comments’, ‘’)
if int(movie_id)> 0 and comments:
movie_comments = UserComments() # 实例化
movie = Movie.objects.get(id= int(movie_id))
movie_comments.movie = movie
movie_comments.user = request.user
movie_comments.comment = comments
movie_comments.save()
# return render(request,‘playMovie.html’,{“status”:“success”, “msg”:“评论成功”,“movie_comments”: movie_comments})
return HttpResponse(’{“status”:“success”, “msg”:“评论成功”}’, content_type=‘application/json’)
else:
return HttpResponse(’{“status”:“fail”, “msg”:“评论失败”}’, content_type=‘application/json’)

评级

class MovieDetailView(View):
# 电影详情页
def get(self, request, movie_id):
movieId=Movie.objects.get(id= int(movie_id))

    # 点击数加一movieId.click_nums += 1movieId.save()# 获取电影详情信息movie_info = MovieParticulars.objects.get(id=int(movie_id))# 热门排行fav_movie = Movie.objects.all().order_by('-fav_nums')[:10]# 收藏is_fav = '收藏'if request.user.is_authenticated:if UserFavorite.objects.filter(user=request.user, movie_id=int(movie_id)):is_fav = '已收藏'# 显示评论comments = UserComments.objects.filter(movie=movieId).order_by('-add_time')try:page = request.GET.get('page', 1)except PageNotAnInteger:page = 1p = Paginator(comments,8)  # 每页显示8个,从all_classification中取comments_page = p.page(page)# 显示评分ratings=float(0)if request.user.is_authenticated:ratings=UserRatings.objects.filter(user=request.user, movie=movieId)# 记录浏览if request.user.is_authenticated:if not UserBrowse.objects.filter(user= request.user, movie_id=int(movie_id)):UserBrowse.objects.create(user=request.user, movie_id=int(movie_id))return render(request, 'playMovie.html', {'movie_info': movie_info,'fav_movie': fav_movie,'is_fav': is_fav,'comments_page': comments_page,'ratings': ratings,})





from datetime import datetime

from django.db import models

class Movie(models.Model):
# movieId=models.IntegerField(‘电影ID’,default=0,)
name=models.CharField(‘电影名称’,max_length=50)
fav_nums=models.IntegerField(‘收藏人数’,default=0)
click_nums=models.IntegerField(‘点击数’,default=0)
add_time=models.DateTimeField(‘添加时间’,default=datetime.now)

class Meta:verbose_name="电影"verbose_name_plural=verbose_namedef __str__(self):return self.name

class MovieParticulars(models.Model):
MOVIE_TYPE=(
(‘aq’, u’爱情’),
(‘jq’, u’剧情’),
(‘xj’, u’喜剧’),
(‘wx’, u’武侠’),
(‘dz’, u’动作’),
(‘xy’, u’悬疑’),
(‘kb’, u’恐怖’),
(‘fz’, u’犯罪’),
(‘js’, u’惊悚’),
(‘kh’, u’科幻’),
(‘mx’, u’冒险’),
(‘dm’, u’动漫’),
(‘ty’, u’体育’),
(‘jl’, u’记录’),
(‘zz’, u’战争’)
)

REGION=(('zg',u'中国'),('hg',u'韩国'),('rb',u'日本'),('om',u'欧美')
)LANGUAGE=(('chinese',u'国语'),('cantonese',u'粤语'),('japanese',u'日语'),('korean',u'韩语'),('english',u'英语'),('french',u'法语'),('portuguese',u'葡萄牙语'),('spanish', u'西班牙语')
)
name=models.ForeignKey(Movie,verbose_name='电影',on_delete=models.CASCADE)
image = models.ImageField('封面图', upload_to='movies/images/%Y/%m', default='images/c3.jpg', max_length=300)
movie_type=models.CharField(verbose_name='类型',choices=MOVIE_TYPE,default='爱情',max_length=10)
director=models.CharField('导演',max_length=20)
protagonist=models.CharField('主演',max_length=20)
region=models.CharField(verbose_name=u'地区/国家',choices=REGION,default='zg',max_length=10)
language=models.CharField(verbose_name=u'语言',choices=LANGUAGE,default='chinese',max_length=10)
release_data=models.DateTimeField('上映时间',default=datetime.now)
intro=models.TextField('简介')
add_time = models.DateTimeField("添加时间", default=datetime.now)class Meta:verbose_name='电影详情'verbose_name_plural=verbose_namedef __str__(self):return self.movie_type

class MovieResourse(models.Model):
name=models.ForeignKey(Movie,verbose_name=“电影”,on_delete=models.CASCADE)
download = models.FileField(“资源文件”, upload_to=“movies/resource/%Y/%m”, max_length=100)
add_time = models.DateTimeField(“添加时间”, default=datetime.now)

class Meta:verbose_name='电影资源'verbose_name_plural=verbose_name

基于Python + Django + mysql的协同推荐算法的电影推荐系统相关推荐

  1. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

  2. Python实现基于用户的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于用户的协同过滤推荐(User-based CF)的原理假设: ...

  3. Python实现基于物品的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于物品的协同过滤推荐(Item-based CF)的假设原理为 ...

  4. 基于Mahout实现协同过滤推荐算法的电影推荐系统

    1 Mahout介绍 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更 ...

  5. 【基于python+Django的物品协同过滤音乐推荐系统-哔哩哔哩】 https://b23.tv/V2zN54R

    [基于python+Django的物品协同过滤音乐推荐系统-哔哩哔哩] https://b23.tv/V2zN54R https://b23.tv/V2zN54R

  6. 基于Python+Django+MYSQL的ERP管理系统的设计与实现

    基于Python+Django+MYSQL的ERP管理系统的设计与实现  源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ ERP管理系统是商业信息管 ...

  7. java计算机毕业设计基于ssm的协同过滤算法的电影推荐系统(源代码+数据库+Lw文档)

    项目介绍 "互联网+"的战略实施后,很多行业的信息化水平都有了很大的提升.但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人 ...

  8. 【计算机毕业设计】009基于推荐算法的电影推荐系统

    一.系统截图(需要演示视频可以私聊) 摘  要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式.本基于推荐算法的电影推荐系统就是在 ...

  9. 基于内容推荐算法的电影推荐系统

    基于内容的推荐算法 格局用户过去一段时间内喜欢的物品,以及由此推算出来用户偏好,为用户推荐相似物品.其中的"内容"指的便是:用户过去一段时间内喜欢的物品,以及由此推算出来的用户偏好 ...

最新文章

  1. 谷歌翻译无法连接网络_Windows无法连接网络,这几招教你解决
  2. ppk on JavaScript第二章:背景(完结篇)
  3. 关系数据库是如何工作的
  4. MS CRM 2011插件调试工具
  5. php小结,PHP编程小结
  6. PHP常用算法和数据结构示例(必看篇)
  7. 【java】 ssm+ssh原生态框架(仅供参考)
  8. vim 多行添加注释,取消注释
  9. 使用Disentangling形式的损失函数回归2D和3D目标框
  10. 转载关于通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端
  11. screenX,clientX,pageX,offsetX,的区别
  12. 美赛整理之Matlab读取全球海洋温度数据并显示干货
  13. Log4Cpp 使用实例
  14. 算法竞赛入门经典习题
  15. Mujoco制作模拟视频
  16. js使用在指定数据前面或后面插入数据,对List数据排序
  17. Linux的PS1美化
  18. postman面试_接口测试面试常见问题
  19. mysql数据库技术思考题5_Mysql课后思考题
  20. espnet中的transformer和LSTM语言模型对比实验

热门文章

  1. 小班运用计算机教学活动,小班《小蚂蚁》活动教案精选
  2. oracle捕获工具,SQL Monitor(oracle语句追踪工具)
  3. Sql like模糊查询 区分大小写
  4. Redis深入浅出—hash、set
  5. 转换上课周次字符串(我带着困惑我一周之久的编程题来了)
  6. 【转载】UEBA架构设计之路
  7. 关于uni-app隐藏安卓虚拟键
  8. 关于sd卡的读取权限
  9. 百瓦快充伤电池?1天两充用了574天后 我发现真相
  10. 【接口自动化】3.写接口自动化case要注意的点