当前位置:   article > 正文

1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页

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设计

  1. #管理员表
  2. class gly(models.Model):
  3. yhm=models.CharField(max_length=40)#用户名
  4. mm=models.CharField(max_length=40)#密码
  5. xm=models.CharField(max_length=40)#姓名
  6. #用户表
  7. class yonghu(models.Model):
  8. yhm=models.CharField(max_length=40)#用户名
  9. mm=models.CharField(max_length=40)#密码
  10. nc=models.CharField(max_length=40)#昵称
  11. nl=models.CharField(max_length=40)#年龄
  12. xb=models.CharField(max_length=40)#性别
  13. dz=models.CharField(max_length=40)#地址
  14. yx=models.CharField(max_length=40)#邮箱
  15. #公告表
  16. class gonggao(models.Model):
  17. bt=models.CharField(max_length=40)#标题
  18. nr=models.CharField(max_length=4000)#内容
  19. fbsj=models.CharField(max_length=40)#发布时间
  20. #电影类型表
  21. class dylx(models.Model):
  22. lx=models.CharField(max_length=40)#类型
  23. #电影表
  24. class dianying(models.Model):
  25. dymc=models.CharField(max_length=40)#电影名称
  26. lx=models.CharField(max_length=400)#类型
  27. jj=models.CharField(max_length=4000)#简介
  28. tp=models.CharField(max_length=400)#图片
  29. dy=models.CharField(max_length=400)#导演
  30. zy=models.CharField(max_length=400)#主演
  31. nf=models.CharField(max_length=40)#年份
  32. gj=models.CharField(max_length=400)#国家
  33. pf=models.CharField(max_length=40)#评分
  34. ll = models.IntegerField(default=0) #浏览量
  35. tj = models.CharField(max_length=40, default='否')
  36. #电影浏览表
  37. class dyll(models.Model):
  38. dy=models.CharField(max_length=40)#电影
  39. yh=models.CharField(max_length=40)#用户
  40. sj=models.CharField(max_length=40)#时间
  41. #电影评价表
  42. class dypj(models.Model):
  43. dy=models.CharField(max_length=40)#电影
  44. pj=models.CharField(max_length=4000)#评价
  45. yh=models.CharField(max_length=40)#用户
  46. pjsj=models.CharField(max_length=40)#评价时间

代码实现

  1. #登录首页
  2. def login(request):
  3. if request.method == 'GET':
  4. return render(request, "login.html")
  5. if request.method == 'POST':
  6. yhm = request.POST.get('yhm') # 用户名
  7. mm = request.POST.get('mm') # 密码
  8. qx = request.POST.get('qx') # 密码
  9. if qx == "用户":
  10. res = models.yonghu.objects.filter(yhm=yhm, mm=mm).count()
  11. if qx == "管理员":
  12. res = models.gly.objects.filter(yhm=yhm, mm=mm).count()
  13. if res == 0:
  14. messages.success(request, "操作失败、用户名和密码不匹配")
  15. return redirect('/login')
  16. elif res > 0:
  17. if qx == "用户":
  18. obj = models.yonghu.objects.filter(yhm=yhm, mm=mm).first()
  19. request.session['id'] = obj.id
  20. if qx == "管理员":
  21. obj = models.gly.objects.filter(yhm=yhm, mm=mm).first()
  22. request.session['id'] = obj.id
  23. request.session['yhm'] = yhm
  24. request.session['mm'] = mm
  25. request.session['qx'] = qx
  26. return redirect('/main')
  27. #系统首页
  28. def main(request):
  29. return render(request, "main.html")
  30. #添加管理员
  31. def glyadd(request):
  32. if request.method == 'GET':
  33. return render(request, "gly/glyadd.html")
  34. if request.method == 'POST':
  35. yhm = request.POST.get('yhm') #用户名
  36. mm = request.POST.get('mm') #密码
  37. xm = request.POST.get('xm') #姓名
  38. res = models.gly.objects.filter(yhm=yhm).count();
  39. if res > 0:
  40. messages.success(request, "操作失败、用户名重复")
  41. elif res == 0:
  42. messages.success(request, "操作成功")
  43. models.gly.objects.create(yhm=yhm,mm=mm,xm=xm, )
  44. #return render(request, "gly/glyadd.html")
  45. return redirect('/gly/glyadd')
  46. #管理员列表
  47. def glylist(request):
  48. print(request.method)
  49. global list
  50. if request.method == 'GET':
  51. yhm= request.GET.get('yhm')#用户名
  52. if not yhm:
  53. yhm = ""
  54. print(yhm)
  55. list = models.gly.objects.filter(yhm__icontains=yhm).all() # 获取gly表所有的数据
  56. return render(request, "gly/glylist.html", {'list': list})
  57. #修改管理员
  58. def glymodify(request):
  59. # 获取要修改的数据的id
  60. if request.method == 'GET':
  61. id = request.GET.get('id')
  62. obj = models.gly.objects.get(id=id)
  63. return render(request, 'gly/glymodify.html', {'obj': obj})
  64. id = request.POST.get('id')
  65. yhm = request.POST.get('yhm') #用户名
  66. mm = request.POST.get('mm') #密码
  67. xm = request.POST.get('xm') #姓名
  68. messages.success(request, "操作成功")
  69. ret = models.gly.objects.filter(id=id).update(yhm=yhm,mm=mm,xm=xm, )
  70. return redirect('/gly/glylist')
  71. def glymod(request):
  72. # 获取要修改的数据的id
  73. if request.method == 'GET':
  74. id = request.session.get('id')
  75. obj = models.gly.objects.get(id=id)
  76. return render(request, 'gly/modify.html', {'obj': obj})
  77. id = request.POST.get('id')
  78. yhm = request.POST.get('yhm') #用户名
  79. mm = request.POST.get('mm') #密码
  80. xm = request.POST.get('xm') #姓名
  81. messages.success(request, "操作成功")
  82. ret = models.gly.objects.filter(id=id).update(yhm=yhm,mm=mm,xm=xm, )
  83. return redirect('/gly/glymod')
  84. # 管理员详情
  85. def glydetail(request):
  86. # 获取要修改的数据的id
  87. id = request.GET.get('id')
  88. obj = models.gly.objects.get(id=id)
  89. return render(request, 'gly/glydetail.html', {'obj': obj})
  90. #管理员删除
  91. def glydelete(request):
  92. # 获取要删除数据的id
  93. id = request.GET.get('id')
  94. # 查询数据库是否存在
  95. obj = models.gly.objects.get(id=id)
  96. if obj:
  97. # 在数据库中删除
  98. obj.delete()
  99. messages.success(request, "操作成功")
  100. return redirect('/gly/glylist')
  101. return HttpResponse("删除失败")
  102. #添加用户
  103. def yonghuadd(request):
  104. if request.method == 'GET':
  105. return render(request, "yonghu/yonghuadd.html")
  106. if request.method == 'POST':
  107. yhm = request.POST.get('yhm') #用户名
  108. mm = request.POST.get('mm') #密码
  109. nc = request.POST.get('nc') #昵称
  110. nl = request.POST.get('nl') #年龄
  111. xb = request.POST.get('xb') #性别
  112. dz = request.POST.get('dz') #地址
  113. yx = request.POST.get('yx') #邮箱
  114. res = models.yonghu.objects.filter(yhm=yhm).count();
  115. if res > 0:
  116. messages.success(request, "操作失败、用户名重复")
  117. elif res == 0:
  118. messages.success(request, "操作成功")
  119. models.yonghu.objects.create(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )
  120. #return render(request, "yonghu/yonghuadd.html")
  121. return redirect('/yonghu/yonghuadd')
  122. #用户列表
  123. def yonghulist(request):
  124. print(request.method)
  125. global list
  126. if request.method == 'GET':
  127. yhm= request.GET.get('yhm')#用户名
  128. if not yhm:
  129. yhm = ""
  130. print(yhm)
  131. list = models.yonghu.objects.filter(yhm__icontains=yhm).all() # 获取yonghu表所有的数据
  132. return render(request, "yonghu/yonghulist.html", {'list': list})
  133. #修改用户
  134. def yonghumodify(request):
  135. # 获取要修改的数据的id
  136. if request.method == 'GET':
  137. id = request.GET.get('id')
  138. obj = models.yonghu.objects.get(id=id)
  139. return render(request, 'yonghu/yonghumodify.html', {'obj': obj})
  140. id = request.POST.get('id')
  141. yhm = request.POST.get('yhm') #用户名
  142. mm = request.POST.get('mm') #密码
  143. nc = request.POST.get('nc') #昵称
  144. nl = request.POST.get('nl') #年龄
  145. xb = request.POST.get('xb') #性别
  146. dz = request.POST.get('dz') #地址
  147. yx = request.POST.get('yx') #邮箱
  148. messages.success(request, "操作成功")
  149. ret = models.yonghu.objects.filter(id=id).update(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )
  150. return redirect('/yonghu/yonghulist')
  151. #修改用户
  152. #修改用户
  153. def yhmodify(request):
  154. # 获取要修改的数据的id
  155. if request.method == 'GET':
  156. id = request.session.get('id')
  157. obj = models.yonghu.objects.get(id=id)
  158. return render(request, 'qt/yonghumodify.html', {'obj': obj})
  159. id = request.POST.get('id')
  160. yhm = request.POST.get('yhm') #用户名
  161. mm = request.POST.get('mm') #密码
  162. nc = request.POST.get('nc') #昵称
  163. nl = request.POST.get('nl') #年龄
  164. xb = request.POST.get('xb') #性别
  165. dz = request.POST.get('dz') #地址
  166. yx = request.POST.get('yx') #邮箱
  167. messages.success(request, "操作成功")
  168. ret = models.yonghu.objects.filter(id=id).update(yhm=yhm,mm=mm,nc=nc,nl=nl,xb=xb,dz=dz,yx=yx, )
  169. return redirect('/yonghu/yhmodify')
  170. # 用户详情
  171. def yonghudetail(request):
  172. # 获取要修改的数据的id
  173. id = request.GET.get('id')
  174. obj = models.yonghu.objects.get(id=id)
  175. 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

四系统实现

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号