from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.http import JsonResponse
from django.contrib.auth.hashers import make_password, check_password
from django.db import models
from .models import Movie, User, Comment, Advertise
# Create your views here.
# 首页
def index(request):
# return HttpResponse('hi')
# return render(request, 'base.html')
key = request.COOKIES.get('usernameKey')
usernameKey = request.session.get(key, 0)
# 导航显示的视频封面图片
carousel_list = Movie.objects.filter(is_carousel=True)
for i in carousel_list:
i.new_link = 'https://img3.doubanio.com/view/photo/l/public/' + str(i.cover_link).split('_')[0] + '.webp'
if i.new_link.count('.webp') > 1:
i.new_link = i.new_link[ : len(i.new_link) - 5]
# print(i.new_link)
# 推荐页面显示的视频小图(10个)
recommend_list = Movie.objects.order_by('-mark')[:10]
for r in recommend_list:
r.pic_link = 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/' + str(r.cover_link).split('_')[0] + '.webp'
if r.pic_link.count('.webp') > 1:
r.pic_link = r.pic_link[ : len(r.pic_link) - 5]
# print(r.pic_link)
r.like_count = len(r.like.all()) # 视频被收藏的总数
# print(r.like_count)
return render(request, 'index.html', {'carousel_list':carousel_list,
'recommend_list':recommend_list,
'username':usernameKey,
})
# 收藏/取消收藏
def like(request):
state = request.GET.get('state') # 收藏状态
movie_id = request.GET.get('movie_id') # 视频id
token = request.COOKIES.get('userToken')
currentuser = User.objects.get(token=token) # 当前登陆的用户
like_movie = Movie.objects.get(id=movie_id) # 获取视频对象
# print(like_movie.like.all()) # 该视频对应的所有收藏用户
if state == '1': # 取消
like_movie.like.remove(currentuser)
elif state == '0': # 收藏
like_movie.like.add(currentuser)
return JsonResponse({'data':'success'})
# 详情页
def single(request, mid):
key = request.COOKIES.get('usernameKey')
usernameKey = request.session.get(key, 0)
token = request.COOKIES.get('userToken')
single_movie = Movie.objects.get(id=mid)
try:
currentuser = User.objects.get(token=token)
except User.DoesNotExist as e:
currentuser = None
# print(single_movie.like.all()) # 返回当前电影对应的收藏用户名称
if currentuser != None: # 当前用户已登陆
if currentuser in single_movie.like.all(): # 当前登陆用户已经收藏了本电影
is_like = 1
else: # 当前用户没有收藏此电影
is_like = 0
else:
is_like = 3
single_movie.single_link = 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/' + \
str(single_movie.cover_link).split('_')[0] + '.webp'
if single_movie.single_link.count('.webp') > 1:
single_movie.single_link = single_movie.single_link[: len(single_movie.single_link) - 5]
# 侧边栏推荐
side_recommend = Movie.objects.order_by('-mark')[ : 3]
for s in side_recommend:
s.new_link = 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/' + str(s.cover_link).split('_')[0] + '.webp'
if s.new_link.count('.webp') > 1:
s.new_link = s.new_link[ : len(s.new_link) - 5]
s.like_count = len(s.like.all())
# 获取评论
try:
comment_list = Comment.objects.filter(movie_id=mid)
except Comment.DoesNotExist as e:
comment_list = []
comment_list_count = len(comment_list) # 评论总数
return render(request, 'single.html', {'movie':single_movie,
'side_recommend':side_recommend,
'username':usernameKey,
'is_like':is_like,
'comment_list':comment_list,
'comment_list_count':comment_list_count,
})
# 评论
def comment(request, mid):
comment_content = request.POST.get('comment')
token = request.COOKIES.get('userToken')
currentuser = User.objects.get(token=token)
m = Movie.objects.get(id=mid)
Comment.objects.create(comment_content=comment_content, movie_id=m, user_id=currentuser)
return redirect('/single/' + mid)
# 各类视频展示及搜索页面
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def movie(request, tid):
key = request.COOKIES.get('usernameKey')
usernameKey = request.session.get(key, 0)
# search_result_list = Movie.objects.filter(style_type=)
# 根据id,分类搜索
# print(tid)
# print(type(tid))
if tid == '2': # 最新
search_list = Movie.objects.order_by('-release_time')
elif tid == '4': # 高分
search_list = Movie.objects.order_by('-mark')
elif tid == '5': # 华语
search_list = Movie.objects.filter(country_id=3)
elif tid == '6': # 欧美
search_list = Movie.objects.filter(country_id=2)
elif tid == '7': # 韩国
search_list = Movie.objects.filter(country_id=1)
elif tid == '8': # 日本
search_list = Movie.objects.filter(country_id=4)
elif tid == '9': # 更多
search_list = Movie.objects.all()
elif tid == '0':
key_word = request.POST.get('keyword')
search_list = Movie.objects.filter(name__contains=key_word)
# 重新拼接处理封面图片的url以及出演人员的处理(默认显示3个主角)
for s in search_list:
# 封面图片的链接
s.slink = 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/' + str(s.cover_link).split('_')[0] + '.webp'
if s.slink.count('.webp') > 1:
s.slink = s.slink[ : len(s.slink) - 5]
# print(s.slink)
# 主角
s.s_lead = s.lead_role.all()[:3]
# print(s.s_lead)
s.like_count = len(s.like.all()) # 视频被收藏的总数
paginator = Paginator(search_list, 6) # 一页显示 6 条
page = request.GET.get('page')
# 获取对应页面
try:
results = paginator.page(page)
# 页面不是整数,返回第一页
except PageNotAnInteger:
results = paginator.page(1)
# 页码越界,返回最后一页
except EmptyPage:
results = paginator.page(paginator.num_pages)
# 侧边栏推荐
side_recommend = Movie.objects.order_by('-mark')[: 3]
for s in side_recommend:
s.new_link = 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/' + str(s.cover_link).split('_')[
0] + '.webp'
if s.new_link.count('.webp') > 1:
s.new_link = s.new_link[: len(s.new_link) - 5]
s.like_count = len(s.like.all())
# 底部广告栏
ad_list = Advertise.objects.all()
import os
for a in ad_list:
print(a.pic)
return render(request, 'movie.html', {'username':usernameKey,
'results':results,
'side_recommend':side_recommend,
'ad_list':ad_list,
})
# 登陆页
def login(request):
# 将上一个页面的地址记录
url = request.META.get('HTTP_REFERER', '/ ')
print(url)
request.session['preUrl'] = url
if request.met
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
项目实战 Python Django 电影推荐网站 完整代码 (147个子文件)
scrapy.cfg 265B
bootstrap.css 118KB
style.css 30KB
register.css 91B
movie.csv 169KB
0f000ZfaTILOAzSjfiSJj0.gif 73KB
0f000ZfaTILOAzSjfiSJj0.gif 73KB
0f000ZfaTILOAzSjfiSJj0_A9MxPSQ.gif 73KB
0f000ZfaTILOAzSjfiSJj0_JSSps8h.gif 73KB
person.html 8KB
movie.html 8KB
single.html 6KB
base.html 6KB
register.html 3KB
index.html 3KB
login.html 1KB
gradesign.iml 1KB
doubanMovie.iml 398B
uwsgi.ini 307B
django_socket.ini 198B
p2505642154.jpg 334KB
banner1.jpg 147KB
banner.jpg 123KB
banner2.jpg 117KB
bfdcef89gy1fq547egfzkj208c03cjrs.jpg 24KB
single.jpg 20KB
pic2.jpg 14KB
3.jpg 14KB
4.jpg 14KB
pic5.jpg 12KB
pic8.jpg 12KB
pic6.jpg 12KB
6.jpg 10KB
pic7.jpg 10KB
1.jpg 10KB
8.jpg 10KB
pic3.jpg 9KB
113739820l.jpg 9KB
5.jpg 8KB
7.jpg 8KB
2.jpg 8KB
pic4.jpg 7KB
pic10.jpg 7KB
pic1.jpg 7KB
pic9.jpg 4KB
jquery-1.11.1.min.js 94KB
jquery.flexisel.js 8KB
responsiveslides.min.js 3KB
register.js 2KB
movie.json 210KB
movie.json 49KB
pip-selfcheck.json 60B
nohup.out 24KB
img_sprite.png 6KB
p1.png 6KB
logo.png 4KB
f_logo.png 4KB
rating.png 4KB
rating1.png 3KB
star.png 3KB
search.png 3KB
tick1.png 3KB
views.py 13KB
models.py 4KB
0001_initial.py 4KB
middlewares.py 4KB
settings.py 3KB
settings.py 3KB
movie.py 3KB
admin.py 1KB
urls.py 837B
manage.py 829B
0008_comment.py 803B
0011_advertise.py 787B
pipelines.py 772B
0006_visited.py 732B
items.py 606B
urls.py 572B
0005_auto_20180305_2044.py 569B
0004_auto_20180305_2010.py 512B
0003_movie_like.py 434B
0010_comment_comment_time.py 414B
0002_auto_20180305_1044.py 414B
wsgi.py 412B
0012_auto_20180307_1139.py 343B
0009_auto_20180306_2214.py 337B
0007_auto_20180306_2136.py 336B
ttt.py 331B
django_uwsgi.py 313B
__init__.py 161B
apps.py 96B
tests.py 63B
__init__.py 46B
__init__.py 0B
__init__.py 0B
__init__.py 0B
views.cpython-36.pyc 7KB
models.cpython-36.pyc 5KB
settings.cpython-36.pyc 2KB
movie.cpython-36.pyc 2KB
共 147 条
- 1
- 2
资源评论
- 苏燕楠2020-06-27你好 请问怎么启动 我下载了‘
- qq_537618712022-03-26数据库在哪
求知欲望
- 粉丝: 67
- 资源: 186
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功