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.id

            if qx == "管理员":
                obj = models.gly.objects.filter(yhm=yhm, mm=mm).first()
                request.session['id'] = obj.id
            request.session['yhm'] = yhm
            request.session['mm'] = mm
            request.session['qx'] = qx


        return 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 list
    if 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):
    # 获取要修改的数据的id
    if 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):
    # 获取要修改的数据的id
    if 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):
    # 获取要修改的数据的id
    id = request.GET.get('id')
    obj = models.gly.objects.get(id=id)
    return render(request, 'gly/glydetail.html', {'obj': obj})

#管理员删除
def glydelete(request):
    # 获取要删除数据的id
    id = 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 list
    if 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):
    # 获取要修改的数据的id
    if 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):
    # 获取要修改的数据的id
    if 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):
    # 获取要修改的数据的id
    id = 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

四系统实现

需要源码 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

相关推荐
山东布谷科技官方2 分钟前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
yanwushu3 分钟前
Xserver v1.4.2发布,支持自动重载 nginx 配置
mysql·nginx·php·个人开发·composer
易云码22 分钟前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
newxtc28 分钟前
【客观理性深入讨论国产中间件及数据库-科创基础软件】
数据库·中间件·国产数据库·国产中间件·科创
蓝眸少年CY28 分钟前
MySQL 【流程控制】函数
mysql
水月梦镜花30 分钟前
redis:list列表命令和内部编码
数据库·redis·list
MonkeyKing_sunyuhua1 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
天郁青1 小时前
数据库交互的本地项目:后台管理系统
数据库·交互
马剑威(威哥爱编程)1 小时前
MongoDB面试专题33道解析
数据库·mongodb·面试
小光学长2 小时前
基于vue框架的的流浪宠物救助系统25128(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库·vue.js·宠物