Django基于用户画像的电影推荐系统源码(项目源代码)

2023-11-13

一、项目介绍

公众号:yk 坤帝
获取全部源代码

本系统是以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                           (404500错误页面配置)
│
├─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

六、安装配置说明

当外部配置完成后,可将本系统根目录中config/conf.ini文件打开,然后修改其中的配置。首先是系统的默认配置服务、MySql数据库配置、Redis数据库配置、邮件验证系统配置和Hadoop等配置。
邮件系统主要用于用户注册使用,若无邮件服务,可选择关闭,关闭后会直接提示验证码输入即可。
Hadoop、Spark用于离线推荐分析,若无该需求,可选择关闭。
注意在创建数据库时请注意将数据库的字符编码设置为utf-8编码集,否则运行命令“python manage.py migrate”会报错,请注意。

在项目目录运行命令,创建表结构,同时创建Django管理系统的管理员帐号:
python manage.py makemigrations user movie api
python manage.py migrate
python manage.py createsuperuser
下载基础数据:
链接: https://pan.baidu.com/s/1zJSv1KCHwhpzbhjfDrDzWQ?pwd=b5d8 提取码: b5d8
导入基础数据,登陆进入mysql控制台,并通过source 命令调用sql文件,如:(此处的sql文件为上面下载的三个基础数据文件)
mysql –uroot –p123456 -Dtest
mysql> source sys.sql
上述所有工作都准备完成后使用命令启动该系统服务:python manage.py runserver 0.0.0.0:80018001为端口号,可根据需求更换,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.数据库需用5.6以上的mysql版本;
2.Python用3.73.mysql字符集使用UTF-84.user_usersbase表中id2的账号为访客通用账号,不可移除;
5.导入的账号密码为:Zero  1234566.数据库所有电影数据以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 <module>
    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.

遇见此错误时,找到对应代码文件中的判断版本的两行代码,前面加注释“# ”,忽略错误。
公众号:yk 坤帝
获取全部源代码

项目源码

在这里插入图片描述
原文在此

Django基于用户画像的电影推荐系统源码(项目源代码)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django基于用户画像的电影推荐系统源码(项目源代码) 的相关文章

  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings

    Connection timed out connect If you are behind an HTTP proxy please configure the proxy settings either in IDE or Gradle
  • 我的2018年总结

    前言 本来没有打算总结自己的2018年 毕竟自己就是个普通的不能再普通的学生 没有什么特别值得让人关注的地方 但是今天看到了自己的好朋友昨天写了他的2018年总结 看了感觉记录一下自己的生活还是挺有意义的 所以就也打算稍微写一点 毕竟写这些
  • 启动Nginx报[10013]错误的解决方案

    报错情景 今天自己再本地配置好Nginx 但是启动时报了 10013 的错误 上网查了下 原因是80端口被占用了 错误提示如下图 随后在cmd中输入下列命令 如图示 查看了一下80端口的占用情况 发现果然被占用 情况和网上其他人所遇到的是一
  • Nacos使用域名做为服务地址遇到的问题及解决方案

    一 发现问题 应用启动时 增加Nacos服务端的配置信息 应用使用IP加端口连接Nacos服务器时 运行一切正常 启动参数增加以下Nacos参数 Dspring cloud nacos discovery namespace DEV Dsp
  • NUC980开源项目28-error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was

    上面是我的微信和QQ群 欢迎新朋友的加入 项目码云地址 国内下载速度快 https gitee com jun626 nuc980 open source project 项目github地址 https github com Jun117
  • ES6 -- Iterator 的基本用法

    1 Iterator作用 1 为各种数据 提供一个统一的 简便的访问接口 2 使数据结构的成员能够按某种次序排列 3 ES6创造了一种新的遍历命令for of循环 Iterator接口主要供for of消费 2 Iterator 的遍历过程
  • 华为ensp---组播服务器实验

    一 实验拓扑 ensp里选择MCS为组播服务器 二 设置VLC参数 点击ensp右上角的设置 在工具设置里面把VLC的安装路径选上 三 详细配置 1 组播服务器配置 2 PC端配置 输入MCS组播的IP和MAC地址 2 路由器配置
  • NPM和webpack的关系(转载)

    入门前端的坑也很久了 以前很多大小项目 前端都是传统式开发 一直在重复造轮子 接触VUE后 对vue cli有了解后 仅仅知道vue cli是一个vue项目的脚手架 可以快速的构建一个vue的基于npm的模块化项目 vue内部的打包机制其实
  • IDEA中SonarLint插件的安装与配置

    本文内容概要 本文介绍了IDEA SonarLint插件的装 以及配置SonarLint使用 SonarQube的规则 注意 不含有SonarQube安装和使用 代码管理Sonar和SonarLint简介 Sonar简介摘自sonar百度百
  • Pycharm设置注释行字体和颜色的方法

    第一步 进入 file gt settings gt Editor gt Color Scheme gt python 选择 Line Commet 然后点击 Foreground 选择颜色 大家可以设置自己夏欢注释字体的颜色 我举例设置成
  • zabbix监控多实例redis

    Zabbix监控多实例Redis 软件名称 软件版本 Zabbix Server 6 0 17 Zabbix Agent 5 4 1 Redis 6 2 10 Zabbix客户端配置 编辑自动发现脚本 vim usr local zabbi
  • 三. Consul 作为 SpringCloud 注册中心配置

    目录 一 Consul 简单介绍 1 Consul 的 windows 单机版安装运行 二 配置服务注册到 Consul 1 服务提供方 yml 文件配置注册到 Consul 2 服务消费方 yml 文件配置注册到 Consul 3 服务消
  • vue使用video.js实现播放m3u8格式的视频

    一 安装video js npm install video js 我使用的video js版本如下 video js 7 20 3 二 VideoPlayer组件 在components下新建一个VideoPlayer文件夹 index如
  • Allegro各层简介

    1 Allegro的整体分层可以分为大类Class和小类Subclass 常用的Class如下 Board Geometry 总体层叠 做板框 标注和丝印等等 Etch 铜皮 电气连线 Boundary Package Geometry 封
  • Winform Application.SetUnhandledExceptionMode Method

    Application SetUnhandledExceptionMode 方法 可以设置程序的一场处理 参数是一个 UnhandledExceptionMode 的枚举 参数值 说明 Automatic 将所有异常路由到 ThreadEx
  • Mimikatz中sekurlsa::wdigest的实现

    0x00 前言 Mimikatz中sekurlsa wdigest是渗透测试中经常会用到的功能 它能够从lsass进程中提取凭据 通常可获得已登录用户的明文口令 Windows Server 2008 R2及更高版本的系统默认无法获得 需要
  • 帧、报文、报文段、分组、包、数据报的概念区别

    1 报文 message 我们将位于应用层的信息分组称为报文 报文是网络中交换与传输的数据单元 也是网络传输的单元 报文包含了将要发送的完整的数据信息 其长短不需一致 报文在传输过程中会不断地封装成分组 包 帧来传输 封装的方式就是添加一些
  • 【ARM】Linux内核驱动之中断

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https gitee com stylle linux code 点赞 收藏 再看 养成习惯 订阅的粉丝可通过PC端文末加我微信 可对文章的内容进
  • Microsoft.Web.WebView2 初体验

    上篇已经介绍了WebView2的背景 今天有时间尝试一下 文档地址 https docs microsoft com zh cn dotnet api microsoft web webview2 winforms webview2 exe
  • Django基于用户画像的电影推荐系统源码(项目源代码)

    一 项目介绍 公众号 yk 坤帝 获取全部源代码 本系统是以Django作为基础框架 采用MTV模式 数据库使用MongoDB MySQL和Redis 以从豆瓣平台爬取的电影数据作为基础数据源 主要基于用户的基本信息和使用操作记录等行为信息