目录
摘要
系统功能
访客用户功能
普通用户功能
管理员功能
开发环境
界面展示
前端界面编辑
后端界面
系统结构
系统架构图编辑
系统模块图
重要模块展示
代码结构
配置文件
源码获取
业余爱好
摘要
当下,电影推荐系统能帮用户从海量影视资源里找到心仪影片,本文介绍的电影推荐系统,运用一系列技术提供个性化推荐服务。
系统以 Django 为基础框架,采用 MTV 模式,实现业务、展示、数据处理的分离,增强可维护性与扩展性。存储选用 MySQL 和 Redis,MySQL 存电影结构化基础信息,Redis 缓存热门推荐、用户短期行为数据,提升系统响应速度。
数据源来自豆瓣平台,通过爬虫获取电影数据,涵盖评分、影评、标签等,让系统全面了解电影特点与用户喜好。推荐算法基于用户基本信息,如年龄、性别,以及浏览、收藏、评分等行为开发用户标签,精准描绘兴趣画像。利用 Hadoop 和 Spark 处理分析数据,前者靠分布式文件系统和计算模型处理海量数据,后者凭借快速内存计算和算法库,实时更新推荐模型。
管理上,使用 Django 自带管理系统,便于管理员管理电影数据、用户信息和系统设置,搭配 simpleui 插件美化,优化操作流程,提升管理效率。
系统功能
访客用户功能
-
登录:已有账号的用户可通过该功能登录网站,进入个人专属页面,获取更多个性化服务。
-
注册:新用户通过填写相关信息,完成注册流程,成为网站会员,获取完整的用户体验。
-
忘记密码:若用户忘记登录密码,可通过此功能,按照提示流程找回或重置密码。
-
电影查询:支持访客用户根据电影名称、演员、导演等关键词进行模糊搜索,查找感兴趣的电影。
-
电影默认推荐:系统根据热门程度、评分等综合因素,为访客用户展示默认的电影推荐列表,帮助用户发现热门影片。
普通用户功能
-
电影搜索查询:提供更丰富的搜索维度,如按电影类型、年代、地区等进行高级搜索,精准定位所需电影。
-
添加删除电影评论:用户可以对观看过的电影发表自己的看法和评价,也可对已发布的评论进行删除操作。
-
个人信息管理:用户能够查看、修改个人基本信息,如姓名、性别、联系方式等,确保信息准确。
-
密码修改:用户可根据自身需求,随时修改登录密码,保障账号安全。
-
邮箱修改:方便用户更新绑定的邮箱地址,用于接收重要通知和找回密码等操作。
-
电影收藏管理:用户可将感兴趣的电影添加到收藏夹,方便后续快速查找,也可对收藏的电影进行整理和删除。
-
电影评分:用户根据自己的观影体验,对电影进行打分评价,为其他用户提供参考。
-
用户注销:用户若不再使用该网站,可选择注销账号,删除个人相关信息。
-
用户画像与精准推送:系统自动记录用户的每一次操作,包括搜索、收藏、评分、评论等行为,根据这些操作对用户进行打标签,并动态修改标签权重,从而形成用户画像。基于用户画像,为用户进行精准电影推送,推荐符合其兴趣偏好的电影。
管理员功能
-
模型数据查找:能够对网站涉及的所有模型数据,如电影信息、用户信息、评论数据、评分数据等进行快速查找,方便管理和维护。
-
模型数据修改:根据实际需求,对电影信息(如片名、剧情简介、演员阵容等)、用户信息(如用户权限、基本资料)等数据进行修改,确保数据的准确性和时效性。
-
模型数据删除:对于过期、错误或不再需要的数据,如无效的电影评论、长期未使用的用户账号等,进行删除操作,优化数据库存储。
开发环境
-
Windows程序:Python 3.7,MySql 5.6,Redis 5.0.7
-
Linux程序:Java 1.8、Spark 3.1.1、Hadoop 2.7
-
数据库:MySQL 5.6,Redis
-
开发平台:Pycharm+Vscode
-
运行环境:Windows 10,Linux
界面展示
前端界面
后端界面
系统结构
系统架构图
系统模块图
重要模块展示
代码结构
├─BiShe
│ ├─admin.py (Django后端管理系统主要配置)
│ ├─views.py (各个页面访问调用)
│ └─urls.py (各个页面访问地址)
│
├─BiSheServer
│ ├─settings.py (Django主要配置文件)
│ └─urls.py (一级地址处理地址)
│
├─config (配置文件存放目录)
│ └─conf.ini (本系统主要配置文件)
│
├─spark
│ ├─jars (MySQL连接jar包)
│ └─spark.py (Spark处理用户画像,可独立)
│
├─movie
│ ├─models.py (电影模型配置,对应数据库表)
│ ├─views.py (电影的api接口)
│ └─urls.py (二级movie地址配置)
│
├─user
│ ├─models.py (用户模型配置,对应数据库表)
│ ├─views.py (用户的api接口)
│ └─urls.py (二级user地址配置)
│
├─api (api文件夹)
│ ├─api.py (其他API)
│ ├─movie_api.py (电影操作api)
│ ├─user_api.py (用户操作api)
│ ├─crontab.py (配置包)
│ ├─captcha.py (生成验证码api)
│ ├─delay_work.py (使用线程修改标签)
│ ├─districts.py (查询区域地址api)
│ ├─email.py (邮箱发送邮件api)
│ ├─email_vail.py (邮件发送前的验证)
│ ├─middleware_log.py (自定义日志中间件)
│ ├─MidnightRotatingFileHandler.py (线程安全日志切割配置)
│ ├─model_json.py (数据库查询结果转换)
│ ├─redis_pool.py (Redis连接池)
│ ├─models.py (中国省市地区表、首页轮播图表)
│ ├─response.py (api统一格式化响应)
│ ├─set_var.py (模板配置set变量操作符)
│ ├─upload_log.py (上传系统日志文件)
│ ├─urls.py (api响应地址配置)
│ └─views.py (404、500错误页面配置)
│
├─log (日志文件存放临时目录)
├─static (静态文件存放目录)
├─templates (页面模板文件存放目录)
└─requirements.txt (依赖安装需求库文件)
配置文件
;系统配置 必需配置
[DEFAULT]
;是否启用调试服务
DEBUG = True
;是否启用日志系统
USE_LOG = False
;允许访问的地址
ALLOWED_HOSTS = [*]
;静态文件目录
STATIC_HOME = static
;日志目录
LOG_HOME = log/
;模板目录
TEMPLATES_HOME = templates
; 设置允许上传的文件格式
ALLOW_EXTENSIONS = ['png', 'jpg', 'jpeg']
; 设置允许上传的文件大小,B字节为单位
ALLOW_MAXSIZE = 5242880
;头像文件存放地址
AVATARS_UPLOAD_FOLDER = static/images/avatars/
;MySql数据库配置 必需配置
[DATEBASE]
;数据库引擎驱动
DATABASES_ENGINE = django.db.backends.mysql
;数据库名称
DATABASES_NAME = sql_bs_sju_site
;数据库链接地址
DATABASES_HOST = 127.0.0.1
;数据库端口
DATABASES_PORT = 3306
;数据库用户名
DATABASES_USER = sql_bs_sju_site
;数据库密码
DATABASES_PASSWORD = xzDPV7JL79w3Epg
;Redis数据库配置 必需配置
[REDIS]
;数据库地址
REDIS_HOST = 127.0.0.1
;数据库端口号
REDIS_PORT = 6379
;数据库连接密码
REDIS_PASSWORD = 123456
;数据库存放的库号
REDIS_DB = 2
;邮件验证系统配置 可选配置
[EMAIL]
;是否使用邮箱验证服务,False为关闭时将不会真实发送邮件验证,True为启用
EMAIL_USE = False
;邮件服务器地址
EMAIL_HOST = smtpdm.aliyun.com
;邮件服务登录账号
EMAIL_USER = admin@bishe.com
;邮件服务账号密码
EMAIL_PASSWORD = 123456
;Hadoop配置 可选配置
[HADOOP_LOG]
;Hadoop链接地址
HADOOP_HOST = 172.17.183.81
; 客户端连接的目录
ROOT_PATH = /sys_data_log
; HDFS上的路径,注意,需要先在hdfs手动创建此目录
REMOTE_PATH = /sys_data_log
; 本地路径,建议写绝对路径,例如:E:\my_work\测试目录 "D:/tmp/output"
LOCAL_PATH = log/
;日志后缀格式,同时也会根据其进行切片
;按日切%Y-%m-%d 按月切%Y-%m 按小时切%Y-%m-%d_%H
LOG_SUFFIX = %Y-%m-%d
源码获取
更多开源项目链接:
https://pan.baidu.com/s/1skV-gNYKwTqIcd5ve6rHEA?pwd=jn5a 提取码: jn5a
–来自百度网盘超级会员v5的分享
业余爱好
写毕业代码,毕业论文;vx: code_zhp 代码部署,代码讲解。