From 1ab05b90f490a75c216253f6aad827506a9a4140 Mon Sep 17 00:00:00 2001 From: syk1209wwz0306 <3228195956@qq.com> Date: Wed, 29 May 2024 17:00:16 +0800 Subject: [PATCH] commit0529 --- .../movie/__pycache__/forms.cpython-38.pyc | Bin 2505 -> 2505 bytes .../movie/__pycache__/models.cpython-38.pyc | Bin 5026 -> 5026 bytes .../movie/__pycache__/urls.cpython-38.pyc | Bin 426 -> 464 bytes .../movie/__pycache__/views.cpython-38.pyc | Bin 2777 -> 3449 bytes MoviesRecommend/movie/urls.py | 22 ++--- MoviesRecommend/movie/views.py | 49 +++++++++-- MoviesRecommend/templates/movie/index.html | 2 +- MoviesRecommend/templates/movie/search.html | 79 ++++++++++++++++++ 8 files changed, 129 insertions(+), 23 deletions(-) create mode 100644 MoviesRecommend/templates/movie/search.html diff --git a/MoviesRecommend/movie/__pycache__/forms.cpython-38.pyc b/MoviesRecommend/movie/__pycache__/forms.cpython-38.pyc index b9c6ed85dc05bbbe88de96adc5effe7d3876e3e0..19dc131b2ee2ac4dea0a8dfca20cde9068165d6d 100644 GIT binary patch delta 20 acmX>pd{US@l$V!_0SN35hi&BE#|Z#5dj%K( delta 20 acmX>pd{US@l$V!_0SLaV4BW`Qj}rhmxdpBO diff --git a/MoviesRecommend/movie/__pycache__/models.cpython-38.pyc b/MoviesRecommend/movie/__pycache__/models.cpython-38.pyc index c92c1ae69a82d3b86dbb24a4ee80207e3dd3ad23..7ad0b130e429a24981142674aa3a0e69dc128331 100644 GIT binary patch delta 20 acmZ3azDS)rl$V!_0SLklhHd1YE(`!M(gf-N delta 20 acmZ3azDS)rl$V!_0SIm%3f#y&T^Im0Vg+je diff --git a/MoviesRecommend/movie/__pycache__/urls.cpython-38.pyc b/MoviesRecommend/movie/__pycache__/urls.cpython-38.pyc index 1ffc8587111a01548e2c838114882e86e8b25d75..5b98edec2812cc0df4638b77fa9c6ce54a6a1236 100644 GIT binary patch delta 141 zcmZ3*e1Tazl$V!_0SGdVhox<0WMFs<;vfSKAjbiSi*qJwhsvZfrf{b+XK^lITgZ^Y zoxyoy;nl$V!_0SG2M4^C@kW?*;>;vfTdAjbiSi=!rLhjOJeM{%Zb2Qz5$Oq>(Q q?5D{!@kfZ*E$-5yoPxxXlGLKS;*|_V{6OVJ{FCz-YfSRhM5!%aY<=Hyx?s~)Q zhS18953T5hBB43L!9GU)2Pz@{0V;84B{*Oa5<-W#WJf~xLnKc1iO&Aj)%{(bhJ zxyp@l*&*=!_3PTrr20eU=-@l(al&atTnfKhq{X_c$INB1;Tn{1owLY{E!T=|*NzKr zA$DAcl7M!L!;)e-sEp`{x>GBJ8{E7{xEZj!x?6?5#ck-@sy_|=0(YSA1P08{K)+t( zB^W5F1&27jPMYPv@q{gTi7v_q^rZZgKB1O;tevGb`LA}BR^?TFf$qpm|7CH<5{F>1 zI0DGcTU);9q`B2jdRg#ICh9mfCvUKqr)t=oMH~gxm&Q$kea zL+jcnWoR}{@e+>ABP_%eVg^wKG&OZe*UtQomqweNeV&vPJk|xdVxRC|$31T#&LWht zH?j2=;%&q`h<6d{Hj_Y1qHzvpacznRwJCf0YT}&y&F+5wd@stuv&>!qYnRci`P8f? za13f@j;_ilcHMI=&Rlz3mu>;;@h5tp+@z`!p^|xpmw5Reb&K~2gJeSiPUX(^z!&ZH zwJ_MaGaV;ihryXtjV!NcaU>3ge13qb%Se}YwLagrQeJpCdm0P!h z+gpj?O;AeDj|0yOu~7Z6mqNY{W+}Hs@YQCJX1Tud@fSJcVLRJR+BnyfXv~tqZsf0F zBp86e?e83(++n#BWFD9kx6>eNiNmm>O>rGO_=~;``0!romw=39v`_A8a3Sq`vaR>^ zq0T|#+f21IXc>JnWPR2*M%rN8gkhs^jwmJA;yT2^>{>$`;-J?_2wQOm;=o$Fssu0M zLqM}28rZ&wP(n~eiy;-q5tk5{WbqN=MTAnrUUe<1eQPk0Rse)nsRM5bK8QnO90xgK zvzl0vkJ!USaRQCJig*pNKbX)(-yTT!^x)Y4VhF+wdwv!sJ&*gD-=ymQqgfWuuis~> zWKZ+ry@N-XDE%TNmV63dikjW88k@}&RK%J!*Gkgm4L@7YwIp?GyzBQm$ud;zRtjnF z1tM$<4L#@xtd87_6COmVK+%lr&c;>&=a@2O@lZgC%G7DB;{T06{VHXR^E3(AUJ`Qq bJeb{#f)B8wR3dCzqeo~>ub!!vs)hdmLLfuU delta 1262 zcmaKs&u<$=6vsWg-u2qvwKu7q#Btg>KT5l8ae#8*M<_}Qlpjr074^2hIe-@Nzcjb{DV@-N-i zogipb@bmk#JNKS6j#?|TC+H=Wgk=@Z@Yl*LX>*&AW@lCDa7Vh_HGVa#NsoK7&g-(l z8%A@oru4Zl10Kj0Z=vQUwX7{e9?CgBC+GRR(Y)-G?C_54@~&Lq3v!V!n*3QkTarEA zlgoTr_IaOG1lwEr?zG_0g0F49ioTx&=m*AML%)@@(Qk_u z#@7?}c_j*;(xkf))1DMc#i>w{rR|;gp?0q42h$?5wc7(RO$2BUL^1&}E_4mVp#UY0 ze%d&1YyY-LC#n$eQ4UhqZ|3P_YRu;KTuL!5$T|A$!bL1rzZGLNE^^TI59NOGCHg{# z#NE8uo_;bdL@J;R*dHt`|7KU%pd4DaSht*6>ntk2w|?A+YH${J4eJQ)e(@lNRO#9{ z$JB=fY*6T2`N&>t56E04oJaJ^AM9Tnk-H0=C5v~wkC%j1*yntyFp}SW8*}PPK<*c&J@>}O3PVuv|_3>$p=*B*dIWilD zHOi!I0VU~RG#Y2IQe%;2qtS`FuhJ4zd;u-L+;#hGq1s$=%^h=84D@*r-GGWKiADp%@<&3LJ`2AE+UC z=Q#UtA|9w=Dy9M^WAG?mC(wU~cJASoS3pBUKxmQb9(QY#Vh;539GUYJ?7rA42pr(} zErC', views.MovieDetailView.as_view(), name='detail'), + # 搜索功能 + path('search', views.SearchView.as_view(), name='search'), + + ] -'''# 搜索功能 -#path('search', views.SearchView.as_view(), name='search'), -# 热门电影 -path('hot', views.PopularMovieView.as_view(), name='hot'), -# 登录 -path('login', views.LoginView.as_view(), name='login'), - -# 退出 -path('logout', views.UserLogout, name='logout'), - - -# 评分历史页面 -path('history/', views.RatingHistoryView.as_view(), name='history'), -# 删除记录 -path('del_rec/', views.delete_recode, name='delete_record'), -# 推荐页面 -path('recommend', views.RecommendMovieView.as_view(), name='recommend')''' \ No newline at end of file + diff --git a/MoviesRecommend/movie/views.py b/MoviesRecommend/movie/views.py index b76d73d..26def37 100644 --- a/MoviesRecommend/movie/views.py +++ b/MoviesRecommend/movie/views.py @@ -1,11 +1,6 @@ import os.path -from django.contrib import messages -from django.db.models import Max, Count -from django.shortcuts import render, redirect, reverse from django.views.generic import View, ListView, DetailView -from .forms import RegisterForm, LoginForm, CommentForm from .models import User, Movie, Movie_rating, Movie_hot -from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger BASE = os.path.dirname(os.path.abspath(__file__)) # 首页视图 @@ -76,3 +71,47 @@ class MovieDetailView(DetailView): +# 搜索电影视图 +class SearchView(ListView): + model = Movie + template_name = 'movie/search.html' + paginate_by = 15 + context_object_name = 'movies' + page_kwarg = 'p' + + def get_queryset(self): + movies = Movie.objects.filter(name__icontains=self.request.GET.dict()['keyword']) + return movies + + def get_context_data(self, *, object_list=None, **kwargs): + context = super(SearchView, self).get_context_data(*kwargs) + paginator = context.get('paginator') + page_obj = context.get('page_obj') + pagination_data = self.get_pagination_data(paginator, page_obj) + context.update(pagination_data) + context.update({'keyword': self.request.GET.dict()['keyword']}) + return context + + def get_pagination_data(self, paginator, page_obj, around_count=2): + current_page = page_obj.number + + if current_page <= around_count + 2: + left_pages = range(1, current_page) + left_has_more = False + else: + left_pages = range(current_page - around_count, current_page) + left_has_more = True + + if current_page >= paginator.num_pages - around_count - 1: + right_pages = range(current_page + 1, paginator.num_pages + 1) + right_has_more = False + else: + right_pages = range(current_page + 1, current_page + 1 + around_count) + right_has_more = True + return { + 'left_pages': left_pages, + 'right_pages': right_pages, + 'current_page': current_page, + 'left_has_more': left_has_more, + 'right_has_more': right_has_more + } \ No newline at end of file diff --git a/MoviesRecommend/templates/movie/index.html b/MoviesRecommend/templates/movie/index.html index 7667a3f..61f91ab 100644 --- a/MoviesRecommend/templates/movie/index.html +++ b/MoviesRecommend/templates/movie/index.html @@ -19,7 +19,7 @@

项目简介

-

....................

+

电影推荐系统

diff --git a/MoviesRecommend/templates/movie/search.html b/MoviesRecommend/templates/movie/search.html new file mode 100644 index 0000000..fcfb648 --- /dev/null +++ b/MoviesRecommend/templates/movie/search.html @@ -0,0 +1,79 @@ +{% extends 'movie/base.html' %} +{% block content %} + + +
+ + + {% for movie in movies %} + +
+ +

{{ movie.name }} + {{ movie.get_score }} +

+
+
+ {% endfor %} +
+ + +{% endblock %} \ No newline at end of file