1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页
一、源码特点
python Django个性化电影推荐管理系统是一套完善的web设计系统mysql数据库 利用elasticsearch存储浏览数据 ,对理解python编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
开发环境pycharm
mysql 5.0 到5.5
elasticsearch
依赖包 Django 2.2.16
pymysql 0.8.0
知识点是 python 爬取豆瓣 elasticsearch存储,协同过滤推荐
二、功能介绍
前台功能
1)首页浏览
2)top10电影信息展现
3)电影访问、评价。系统通过协同过滤算法,结合用户浏览记录,访问A电影的时,系统根据计算矩阵算法最有可能访问的电影,推荐给用户,增加用户访问的粘性,以达到个性化推荐的目的
4)电影评价,查看公告等
后台功能:
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)用户管理:对用户信息进行添加、删除、修改和查看
(3)公告管理:对公告信息进行添加、删除、修改和查看
(4)电影类型管理:对电影类型信息进行添加、删除、修改和查看
(5)电影管理:对电影信息进行添加、删除、修改和查看、一次性爬取豆瓣电影信息,通过python爬取豆瓣电影信息,存储到数据库中,图片文件存在服务器中,当用户访问浏览电影信息时,
(6)电影浏览管理:对电影浏览信息进行删除、修改和查看
(7)电影评价管理:对电影评价信息进行删除、修改和查看
(8)图形化信息统计
(9)用户登录、退出、个人信息修改
models设计
#管理员表
class gly(models.Model):yhm=models.CharField(max_length=40)#用户名mm=models.CharField(max_length=40)#密码xm=models.CharField(max_length=40)#姓名#用户表
class yonghu(models.Model):yhm=models.CharField(max_length=40)#用户名mm=models.CharField(max_length=40)#密码nc=models.CharField(max_length=40)#昵称nl=models.CharField(max_length=40)#年龄xb=models.CharField(max_length=40)#性别dz=models.CharField(max_length=40)#地址yx=models.CharField(max_length=40)#邮箱#公告表
class gonggao(models.Model):bt=models.CharField(max_length=40)#标题nr=models.CharField(max_length=4000)#内容fbsj=models.CharField(max_length=40)#发布时间#电影类型表
class dylx(models.Model):lx=models.CharField(max_length=40)#类型#电影表
class dianying(models.Model):dymc=models.CharField(max_length=40)#电影名称lx=models.CharField(max_length=400)#类型jj=models.CharField(max_length=4000)#简介tp=models.CharField(max_length=400)#图片dy=models.CharField(max_length=400)#导演zy=models.CharField(max_length=400)#主演nf=models.CharField(max_length=40)#年份gj=models.CharField(max_length=400)#国家pf=models.CharField(max_length=40)#评分ll = models.IntegerField(default=0) #浏览量tj = models.CharField(max_length=40, default='否')#电影浏览表
class dyll(models.Model):dy=models.CharField(max_length=40)#电影yh=models.CharField(max_length=40)#用户sj=models.CharField(max_length=40)#时间#电影评价表
class dypj(models.Model):dy=models.CharField(max_length=40)#电影pj=models.CharField(max_length=4000)#评价yh=models.CharField(max_length=40)#用户pjsj=models.CharField(max_length=40)#评价时间
代码实现
#登录首页
def login(request):if request.method == 'GET':return render(request, "login.html")if request.method == 'POST':yhm = request.POST.get('yhm') # 用户名mm = request.POST.get('mm') # 密码qx = request.POST.get('qx') # 密码if qx == "用户":res = models.yonghu.objects.filter(yhm=yhm, mm=mm).count()if qx == "管理员":res = models.gly.objects.filter(yhm=yhm, mm=mm).count()if res == 0:messages.success(request, "操作失败、用户名和密码不匹配")return redirect('/login')elif res > 0:if qx == "用户":obj = models.yonghu.objects.filter(yhm=yhm, mm=mm).first()request.session['id'] = obj.idif qx == "管理员":obj = models.gly.objects.filter(yhm=yhm, mm=mm).first()request.session['id'] = obj.idrequest.session['yhm'] = yhmrequest.session['mm'] = mmrequest.session['qx'] = qxreturn redirect('/main')#系统首页
def main(request):return render(request, "main.html")#添加管理员
def glyadd(request):if request.method == 'GET':return render(request, "gly/glyadd.html")if request.method == 'POST':yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码xm = request.POST.get('xm') #姓名res = models.gly.objects.filter(yhm=yhm).count();if res > 0:messages.success(request, "操作失败、用户名重复")elif res == 0:messages.success(request, "操作成功")models.gly.objects.create(yhm=yhm,mm=mm,xm=xm, )#return render(request, "gly/glyadd.html")return redirect('/gly/glyadd')#管理员列表
def glylist(request):print(request.method)global listif request.method == 'GET':yhm= request.GET.get('yhm')#用户名if not yhm:yhm = ""print(yhm)list = models.gly.objects.filter(yhm__icontains=yhm).all() # 获取gly表所有的数据return render(request, "gly/glylist.html", {'list': list})
#修改管理员
def glymodify(request):# 获取要修改的数据的idif request.method == 'GET':id = request.GET.get('id')obj = models.gly.objects.get(id=id)return render(request, 'gly/glymodify.html', {'obj': obj})id = request.POST.get('id')yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码xm = request.POST.get('xm') #姓名messages.success(request, "操作成功")ret = models.gly.objects.filter(id=id).update(yhm=yhm,mm=mm,xm=xm, )return redirect('/gly/glylist')def glymod(request):# 获取要修改的数据的idif request.method == 'GET':id = request.session.get('id')obj = models.gly.objects.get(id=id)return render(request, 'gly/modify.html', {'obj': obj})id = request.POST.get('id')yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码xm = request.POST.get('xm') #姓名messages.success(request, "操作成功")ret = models.gly.objects.filter(id=id).update(yhm=yhm,mm=mm,xm=xm, )return redirect('/gly/glymod')# 管理员详情
def glydetail(request):# 获取要修改的数据的idid = request.GET.get('id')obj = models.gly.objects.get(id=id)return render(request, 'gly/glydetail.html', {'obj': obj})#管理员删除
def glydelete(request):# 获取要删除数据的idid = request.GET.get('id')# 查询数据库是否存在obj = models.gly.objects.get(id=id)if obj:# 在数据库中删除obj.delete()messages.success(request, "操作成功")return redirect('/gly/glylist')return HttpResponse("删除失败")#添加用户
def yonghuadd(request):if request.method == 'GET':return render(request, "yonghu/yonghuadd.html")if request.method == 'POST':yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码nc = request.POST.get('nc') #昵称nl = request.POST.get('nl') #年龄xb = request.POST.get('xb') #性别dz = request.POST.get('dz') #地址yx = request.POST.get('yx') #邮箱res = models.yonghu.objects.filter(yhm=yhm).count();if res > 0:messages.success(request, "操作失败、用户名重复")elif res == 0:messages.success(request, "操作成功")models.yonghu.objects.create(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )#return render(request, "yonghu/yonghuadd.html")return redirect('/yonghu/yonghuadd')#用户列表
def yonghulist(request):print(request.method)global listif request.method == 'GET':yhm= request.GET.get('yhm')#用户名if not yhm:yhm = ""print(yhm)list = models.yonghu.objects.filter(yhm__icontains=yhm).all() # 获取yonghu表所有的数据return render(request, "yonghu/yonghulist.html", {'list': list})
#修改用户
def yonghumodify(request):# 获取要修改的数据的idif request.method == 'GET':id = request.GET.get('id')obj = models.yonghu.objects.get(id=id)return render(request, 'yonghu/yonghumodify.html', {'obj': obj})id = request.POST.get('id')yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码nc = request.POST.get('nc') #昵称nl = request.POST.get('nl') #年龄xb = request.POST.get('xb') #性别dz = request.POST.get('dz') #地址yx = request.POST.get('yx') #邮箱messages.success(request, "操作成功")ret = models.yonghu.objects.filter(id=id).update(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )return redirect('/yonghu/yonghulist')
#修改用户
#修改用户
def yhmodify(request):# 获取要修改的数据的idif request.method == 'GET':id = request.session.get('id')obj = models.yonghu.objects.get(id=id)return render(request, 'qt/yonghumodify.html', {'obj': obj})id = request.POST.get('id')yhm = request.POST.get('yhm') #用户名mm = request.POST.get('mm') #密码nc = request.POST.get('nc') #昵称nl = request.POST.get('nl') #年龄xb = request.POST.get('xb') #性别dz = request.POST.get('dz') #地址yx = request.POST.get('yx') #邮箱messages.success(request, "操作成功")ret = models.yonghu.objects.filter(id=id).update(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )return redirect('/yonghu/yhmodify')
# 用户详情
def yonghudetail(request):# 获取要修改的数据的idid = request.GET.get('id')obj = models.yonghu.objects.get(id=id)return render(request, 'yonghu/yonghudetail.html', {'obj': obj})
三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件app/settings.py 更改数据库配置
2、开发环境pycharm,数据库为mysql5.0~5.5,使用python语言开发。
3、数据库文件名是pythonfilm.sql ,系统名称pythonfilm
4、系统首页地址:http://127.0.0.1:8080/qt/index
四系统实现




需要源码 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
相关文章:
1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页
一、源码特点 python Django个性化电影推荐管理系统是一套完善的web设计系统mysql数据库 利用elasticsearch存储浏览数据 ,对理解python编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 开发环境pycharm…...
基于IDEA的Maven(依赖介绍和引用)
如何通过一个坐标信息(依赖)去引用 ,某个"jar 包" 会在这篇博客进行学习。 目录 一、学习开始 (0)项目的结构组成和 "pom.xml" 文件内容。 (1)首先需要一个标签…...
pytest测试框架pytest-sugar插件生成进度条
Pytest提供了丰富的插件来扩展其功能,介绍下插件pytest-sugar,可以帮助我们在控制台中显示彩色的测试结果和进度条,提供失败的堆栈回溯信息。 为了使用 pytest-sugar,需要满足以下条件: Python 3.8 或更高版本pytest…...
若依框架集成微信支付
1. 添加微信支付相关依赖 <!-- 微信支付 --> <dependency><groupId>com.github.wxpay</groupId><artifactId>wxpay-sdk</artifactId><version>0.0.3</version> </dependency> <dependency><groupId>com.gi…...
IOS开发学习日记(十七)
简单的第三方登录和分享功能 第三方登录系统 URL Scheme:App间的跳转及通信 App间跳转场景 登陆系统: 跨平台,跨App 标记用户,个性化的推送 使用第三方登录(减少注册成本 / 无须维护敏感信息) 微信 / Q…...
【ARMv8/ARMv9 硬件加速系列 2 -- ARM NEON 加速运算介绍】
文章目录 ARM NEONNEON 向量寄存器NEON 寄存器使用方式NEON 寄存器的视图NEON 寄存器别名NEON 寄存器的用途ARM NEON 在ARMv8架构中,引入了一组新的寄存器,称为向量寄存器(Vector Registers),用于支持高效的向量和浮点计算。这些寄存器是SIMD(Single Instruction, Multi…...
LayoutSystem布局系统
简介: LayoutSystem,是UGUI中由CanvasUpdateSystem发起(m_LayoutRebuildQueue中大部分都是LayoutRebuilder)的关于布局排列的处理系统。 类图: 布局过程 核心代码讲解: LayoutRebuilder...
滚球游戏笔记
1、准备工作 (1) 创建地面:3D Object-Plane,命名为Ground (2) 创建小球:3D Object-sphere,命名为Player,PositionY 0.5。添加Rigidbody组件 (3) 创建文件夹:Create-Foder,分别命名为Material…...
Mysql8死锁排查
Mysql8死锁排查 Mysql8 查询死锁的表 -- 查询死锁表select * from performance_schema.data_locks;-- 查询死锁等待时间select * from performance_schema.data_lock_waits;Mysql8之前的版本 查询死锁的表 -- 查询死锁表SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;-- 查询…...
程序猿成长之路之数据挖掘篇——决策树分类算法(1)——信息熵和信息增益
决策树不仅在人工智能领域发挥着他的作用,而且在数据挖掘中也在分类领域中独占鳌头。了解决策树的思想是学习数据挖掘中的分类算法的关键,也是学习分类算法的基础。 什么是决策树 用术语来说,决策树(Decision Tree)是…...
数据通信与网络(五)
交换机功能: 地址学习(端口/MAC地址映射表) 通信过滤(基于端口/MAC地址映射表) 生成树协议(断开环路) 隔离冲突域 生成树协议 隔离冲突域 交换机配置模式(用不同级别的命令对交换机进行配置) 普…...
数据中心容灾考题
abc cd abc c为啥...
win10远程桌面连接端口,远Win10远程桌面连接端口修改及无法连接解决方案
一、Win10远程桌面连接端口概述 Win10远程桌面连接功能允许用户从远程位置访问和控制另一台计算机。远程桌面连接默认使用TCP 3389端口,但出于安全或其他需求,用户可能希望修改此端口。 二、Win10远程桌面连接端口修改方法 要修改Win10远程桌面连接的…...
基于AT89C52单片机的温度报警系统
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89456321?spm=1001.2014.3001.5503 仿真构造:AT89C52+DS18B20温度模块+三按键+蜂鸣器+四位数码管显示+电源模块。 压缩包构造:源码+仿真图+设计文档+原理图+开题文档+元件…...
[保姆级教程]uniapp配置vueX
文章目录 注意新建文件简单的使用 注意 uniapp是支持vueX的只需配置一下就好 新建文件 在src文件中,新建一个store(如果有的话跳过) 在store中新建一个js文件,修改js文件名称和选择模板为default 在 uni-app 项目根目录下&…...
第二次IAG
IAG in NanJing City 我与南京奥体的初次相遇,也可能是最后一次! 对我来说,IAG 演唱会圆满结束啦! 做了两场充满爱[em]e400624[/em]的美梦 3.30号合肥站,6.21号南京站[em]e400947[/em] 其实,没想到昨天回去看呀!(lack of money […...
智慧校园综合管理系统的优点有哪些
在当今这个信息化飞速发展的时代,智慧校园综合管理系统正逐步成为教育领域的一股革新力量,它悄然改变着我们对传统校园管理的认知。这套系统如同一个无形的桥梁,将先进的信息技术与学校的日常运作紧密相连,展现出多维度的优势。 …...
如何跳出认知偏差,个人认知能力升级
一、教程描述 什么是认知力?认知力(cognitive ability),实际上就是指一个人的认知能力,是指人的大脑加工、储存和提取信息的能力,或者主观对非主观的事物的反映能力,如果变成大白话,…...
Scala中的map函数
Scala中的map函数 在 Scala 中,map 是一种常见的高阶函数,用于对集合中的每个元素应用一个函数,并返回应用了该函数后的新集合,保持原始集合的结构不变。它的主要作用有以下几点: 1. 遍历集合: map 可以遍历…...
linux安装conda环境实践
Conda介绍 conda 是一个开源的软件包管理系统和环境管理软件,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 conda 分为 anaconda 和 miniconda,anaconda 是一个包含了许多常用库的集合版本,miniconda 是精简版…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
