当前位置: 首页 > news >正文

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)首先需要一个标签&#xf…...

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&#xff1a;App间的跳转及通信 App间跳转场景 登陆系统&#xff1a; 跨平台&#xff0c;跨App 标记用户&#xff0c;个性化的推送 使用第三方登录&#xff08;减少注册成本 / 无须维护敏感信息&#xff09; 微信 / 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) 创建地面&#xff1a;3D Object-Plane&#xff0c;命名为Ground (2) 创建小球&#xff1a;3D Object-sphere&#xff0c;命名为Player&#xff0c;PositionY 0.5。添加Rigidbody组件 (3) 创建文件夹&#xff1a;Create-Foder&#xff0c;分别命名为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)——信息熵和信息增益

决策树不仅在人工智能领域发挥着他的作用&#xff0c;而且在数据挖掘中也在分类领域中独占鳌头。了解决策树的思想是学习数据挖掘中的分类算法的关键&#xff0c;也是学习分类算法的基础。 什么是决策树 用术语来说&#xff0c;决策树&#xff08;Decision Tree&#xff09;是…...

数据通信与网络(五)

交换机功能&#xff1a; 地址学习&#xff08;端口/MAC地址映射表&#xff09; 通信过滤&#xff08;基于端口/MAC地址映射表&#xff09; 生成树协议&#xff08;断开环路&#xff09; 隔离冲突域 生成树协议 隔离冲突域 交换机配置模式(用不同级别的命令对交换机进行配置) 普…...

数据中心容灾考题

abc cd abc c为啥...

win10远程桌面连接端口,远Win10远程桌面连接端口修改及无法连接解决方案

一、Win10远程桌面连接端口概述 Win10远程桌面连接功能允许用户从远程位置访问和控制另一台计算机。远程桌面连接默认使用TCP 3389端口&#xff0c;但出于安全或其他需求&#xff0c;用户可能希望修改此端口。 二、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文件中&#xff0c;新建一个store&#xff08;如果有的话跳过&#xff09; 在store中新建一个js文件&#xff0c;修改js文件名称和选择模板为default 在 uni-app 项目根目录下&…...

第二次IAG

IAG in NanJing City 我与南京奥体的初次相遇&#xff0c;也可能是最后一次&#xff01; 对我来说,IAG 演唱会圆满结束啦! 做了两场充满爱[em]e400624[/em]的美梦 3.30号合肥站&#xff0c;6.21号南京站[em]e400947[/em] 其实&#xff0c;没想到昨天回去看呀!(lack of money […...

智慧校园综合管理系统的优点有哪些

在当今这个信息化飞速发展的时代&#xff0c;智慧校园综合管理系统正逐步成为教育领域的一股革新力量&#xff0c;它悄然改变着我们对传统校园管理的认知。这套系统如同一个无形的桥梁&#xff0c;将先进的信息技术与学校的日常运作紧密相连&#xff0c;展现出多维度的优势。 …...

如何跳出认知偏差,个人认知能力升级

一、教程描述 什么是认知力&#xff1f;认知力&#xff08;cognitive ability&#xff09;&#xff0c;实际上就是指一个人的认知能力&#xff0c;是指人的大脑加工、储存和提取信息的能力&#xff0c;或者主观对非主观的事物的反映能力&#xff0c;如果变成大白话&#xff0c…...

Scala中的map函数

Scala中的map函数 在 Scala 中&#xff0c;map 是一种常见的高阶函数&#xff0c;用于对集合中的每个元素应用一个函数&#xff0c;并返回应用了该函数后的新集合&#xff0c;保持原始集合的结构不变。它的主要作用有以下几点&#xff1a; 1. 遍历集合&#xff1a; map 可以遍历…...

linux安装conda环境实践

Conda介绍 conda 是一个开源的软件包管理系统和环境管理软件&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。 conda 分为 anaconda 和 miniconda&#xff0c;anaconda 是一个包含了许多常用库的集合版本&#xff0c;miniconda 是精简版…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...