Django基于用户画像的电影推荐系统源码_当前动态
一、项目介绍
本系统是以Django作为基础框架,采用MTV模式,数据库使用MongoDB、MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户标签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。管理系统使用的是Django自带的管理系统,并使用simpleui进行了美化。
二、系统架构图
三、系统模块图
四、目录结构及主要文件说明
├─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_%HLOG_SUFFIX = %Y-%m-%d
六、安装配置说明
当外部配置完成后,可将本系统根目录中config/conf.ini文件打开,然后修改其中的配置。首先是系统的默认配置服务、MySql数据库配置、Redis数据库配置、邮件验证系统配置和Hadoop等配置。邮件系统主要用于用户注册使用,若无邮件服务,可选择关闭,关闭后会直接提示验证码输入即可。Hadoop、Spark用于离线推荐分析,若无该需求,可选择关闭。注意在创建数据库时请注意将数据库的字符编码设置为utf-8编码集,否则运行命令“python manage.py migrate”会报错,请注意。在项目目录运行命令,创建表结构,同时创建Django管理系统的管理员帐号:python manage.py makemigrations user movie apipython manage.py migratepython manage.py createsuperuser下载基础数据:链接: https://pan.baidu.com/s/1zJSv1KCHwhpzbhjfDrDzWQ?pwd=b5d8 提取码: b5d8导入基础数据,登陆进入mysql控制台,并通过source 命令调用sql文件,如:(此处的sql文件为上面下载的三个基础数据文件)mysql –uroot –p123456 -Dtestmysql> source sys.sql上述所有工作都准备完成后使用命令启动该系统服务:python manage.py runserver 0.0.0.0:8001(8001为端口号,可根据需求更换,0.0.0.0表示所有主机都可访问,若设置为127.0.0.1,则表示只可本地访问)离线处理(可选部分)将项目目录下spark/jars文件夹中的mysql-connector-java-8.0.24.jar文件复制到spark的jars目录下。修改spark目录下的spark.py文件中的spark配置和mysql配置,将其上传到Linux下,加入Linux定时任务每日执行。运行命令:python3 ./spark.py ,即可每日自动处理离线数据,精准推荐,推荐方式同时包含基于电影内容(基于内容)、基于用户相似度(基于协同过滤)推荐的方式。后期如有兴趣的同学还可完善改为实时推荐。同系统安装说明书里的Hadoop、Spark组件都是可选部分,只用于离线处理部分,不安装也可运行整个系统
七、系统安装使用说明书
使用说明书包含在本文结尾的源码文件里,都为大家打包好了。
【资料图】
系统安装使用说明书
系统安装使用说明书截图
八、系统实现效果
1、用户登录
用户登录失败
用户登录成功
用户注册未完成
用户继续完成注册
2、用户注册
用户注册第一步
用户注册第一步数据不符合要求提示
用户注册第一步用户已存在错误提示
用户注册第一步验证码过期错误提示
用户注册第二步用户验证
用户注册第二步用户验证邮箱
用户注册第二步用户验证邮箱验证码错误提示
用户注册第三步完善用户信息
用户注册第三步完善用户信息填写用户信息
用户注册第三步完善用户信息跳过提示
用户注册第四步注册成功
3、忘记密码
用户忘记密码第一步账号核实
用户忘记密码第一步账号核实错误提示
用户忘记密码第二步身份验证
用户忘记密码第二步身份验证邮箱错误提示
用户忘记密码第二步身份验证验证码发送成功提示
用户忘记密码第二步身份验证忘记密码验证邮件
用户忘记密码第三步重置密码
用户忘记密码第三步重置密码成功提示
4、电影查询
电影搜索框搜索电影
电影搜索框搜索电影结果显示
电影类别超链接搜索结果显示
5、电影默认推荐
电影默认推荐栏目显示
6、普通用户功能
用户在评论区添加评论
用户在评论区添加评论成功提示
用户在评论区删除评论
用户在评论区删除评论成功提示
用户在评论管理中心管理个人评论
用户在个人中心查看个人信息
用户在个人中心修改个人信息
用户在个人中心修改个人信息错误提示
用户在个人中心修改个人信息成功提示
用户修改密码错误提示
用户修改密码原密码错误提示
用户修改密码修改成功提示
用户修改邮箱错误提示
用户修改邮箱验证码发送成功提示
用户修改邮箱更改邮箱信息验证邮件
用户修改邮箱修改成功提示
电影收藏成功提示
电影取消收藏成功提示
电影收藏管理中心
电影评分成功提示
主页显示栏目电影推荐
页面顶部电影推荐
电影详情页推荐
用户注销提示
7、管理员功能
普通用户与管理员菜单栏对比
管理系统登录页面
管理系统首页工作台
管理员管理数据界面
九、注意:
1.数据库需用5.6以上的mysql版本;2.Python用3.7;3.mysql字符集使用UTF-8;4.user_usersbase表中id为2的账号为访客通用账号,不可移除;5.导入的账号密码为:Zero 123456;6.数据库所有电影数据以movie_collectmoviedb表中电影数据为基础,用户数据以 user_usersbase为基础,导入数据必须先导入这两张表,其余数据后导,删除数据时则相反,需先删除关联其的数据最后再删该表数据。
十、常见错误:
File "D:\app\Python\Python37\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "D:\app\Python\Python37\lib\site-packages\django\db\backends\mysql\base.py", line 37, in raise ImproperlyConfigured("mysqlclient 1.3.13 or newer is required; you have %s." % Database.__version__)django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.遇见此错误时,找到对应代码文件中的判断版本的两行代码,前面加注释“# ”,忽略错误。
关键词: Django
精心推荐
- 圆通速递发布2022年4月快递业务主要经营数据
- 4月沿海港口货物吞吐量同比减少1.4% 天津港增速超20%
- 去年京津冀工信部门推进签约570多项高端高新项目
- 京津冀区域协同创新指数增长迅速
- 1至2月河北省工业生产平稳开局 规模以上工业增加值同比增长6.0%
- 浙江绍兴15日0-21时新增41例确诊病例
- 沈阳大气优良天数达近5年来最好水平
- 辽宁实行市级政府集中监管 首站定点冷库加强疫情防控
- 辽宁省25个博士后团队冲刺全国博士后创新创业大赛
- 安徽省宿州市埇桥区大营镇大营新村调整为中风险地区
- 云南哀牢山4名地质调查人员因公殉职原因查明
- 全国首部涉及“非现场执法”的法规施行 浦东新区打造引领区数字化城市治理样板
- 杭州一封控小区完成第三轮核酸检测 前两轮检测均为阴性
- 集采未中选药品现在怎么样了?这组数据告诉你
-
(四川统战人说统战事)“海归”博士后王暾:专注灾害预警科技创新 打通灾害预警“最后一公里” 中新网成都12月15日电 (起钰婷)“国
-
中新网福建平和12月15日电 (周晓彬 马淑惠)12月15日,福建省平和县人民法院依法宣判蔡某金等10人涉恶犯罪案件。 法院审理查明,20
-
中新网郑州12月15日电 (记者 韩章云)针对近日网友实名举报中国农业发展银行太康县支行员工夏某华吃空饷一事,中国农业发展银行河南省
-
中新网宿迁12月15日电 (记者 刘林)“房子干净又敞亮,社区漂亮又整洁。”15日,家住江苏宿迁牛角淹社区的袁有亮谈起新家,兴奋的心情
-
中新网通辽12月15日电 (记者 张林虎)15日,记者从内蒙古自治区通辽市科左后旗公安局获悉,该局打掉一个帮助网络犯罪转账的“跑分团队
X 关闭
X 关闭
产业
-
不用跑北京 在家门口也能挂上顶...
日前,我省首个神经疾病会诊中心——首都医科大学宣武医院河北医院...
-
“十四五”期间 河北省将优化快...
从省邮政管理局获悉,十四五期间,我省将优化快递空间布局,着力构...
-
张家口市宣化区:光伏发电站赋能...
3月19日拍摄的张家口市宣化区春光乡曹庄子村光伏发电站。张家口市宣...
-
“张同学”商标被多方抢注 涉及...
“张同学”商标被多方抢注,官方曾点名批评恶意抢注“丁真” ...
-
山东济南“防诈奶奶团”花式反诈...
中新网济南12月15日电 (李明芮)“老有所为 无私奉献 志愿服...
-
广州新增1例境外输入关联无症状...
广州卫健委今日通报,2021年12月15日,在对入境转运专班工作人...
-
西安报告初筛阳性病例转为确诊病例
12月15日10:20,经陕西西安市级专家组会诊,西安市报告新冠病毒...
-
广东东莞新增本土确诊病例2例 ...
(抗击新冠肺炎)广东东莞新增本土确诊病例2例 全市全员核酸检测...
-
中缅边境临沧:民警深夜出击捣毁...
中新网临沧12月15日电 (胡波 邱珺珲)记者15日从云南临沧边境...
-
“土家鼓王”彭承金:致力传承土...
中新网恩施12月15日电 题:“土家鼓王”彭承金:致力传承土家...