您现在的位置是: 网站首页 >Flask >Flask搭建微电影视频网站 Flask
【Flask微电影】28.电影播放详情,评论,显示评论列表
admin2018年11月12日 22:02
【Flask | Html | Python
】
2130人已围观
Flask搭建微电影视频网站简介 利用Flask搭建微电影视频网站 Github地址:https://github.com/xyliurui/FlaskMovie
电影播放详情
修改play电影播放视图
@home.route('/play/<int:movie_id>/')
def play(movie_id):
movie = Movie.query.join(Tag).filter(
Tag.id == Movie.tag_id,
Movie.id == int(movie_id)
).first_or_404()
return render_template('home/play.html', movie=movie)
修改paly.html电影播放页模板
<table class="table">
<tr>
<td style="width:30%;color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-film"></span> 片名
</td>
<td>{{ movie.title }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-tag"></span> 标签
</td>
<td>{{ movie.tag.name }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-time"></span> 片长
</td>
<td>{{ movie.length }} 分钟</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-map-marker"></span> 地区
</td>
<td>{{ movie.area }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-star"></span> 星级
</td>
<td>
<div>
{% for i in range(movie.star) %}
<span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
{% endfor %}
{% for i in range(5 - movie.star) %}
<span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
{% endfor %}
</div>
</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-calendar"></span> 上映时间
</td>
<td>{{ movie.release_time }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-play"></span> 播放数量
</td>
<td>{{ movie.play_num }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-comment"></span> 评论数量
</td>
<td>{{ movie.comment_num }}</td>
</tr>
<tr>
<td style="color:#ccc;font-weight:bold;font-style:italic;">
<span class="glyphicon glyphicon-picture"></span> 影片介绍
</td>
<td>
{{ movie.info }}
</td>
</tr>
</table>
<script type="text/javascript">
jwplayer("moviecontainer").setup({
flashplayer: "{{ url_for('static', filename='jwplayer/jwplayer.flash.swf') }}",
playlist: [{
file: "{{ url_for('static', filename='media/' + movie.url) }}",
title: "{{ movie.title }}"
}],
modes: [{
type: "html5"
}, {
type: "flash",
src: ".{{ url_for('static', filename='jwplayer/jwplayer.flash.swf') }}"
}, {
type: "download"
}],
skin: {
name: "vapor"
},
"playlist.position": "left",
"playlist.size": 400,
height: 500,
width: 774,
});
</script>
<!--播放页面-->
修改index.html电影列表页详情链接
<a href="{{ url_for('home.play', movie_id=movie.id) }}" class="btn btn-primary" target="_blank" role="button"><span class="glyphicon glyphicon-play"></span> 播放</a>
电影评论
创建电影评论表单
class CommentForm(FlaskForm):
content = TextAreaField(
label='内容',
validators=[
DataRequired('请输入内容')
],
description='内容',
render_kw={
# 'id': "input_content"
'class': "form-control",
'rows': "5"
}
)
submit = SubmitField(
label='提交评论',
render_kw={
"class": "btn btn-success",
"id": "btn-sub"
}
)
修改play提交评论视图
@home.route('/play/<int:movie_id>/', methods=['GET', 'POST'])
def play(movie_id):
movie = Movie.query.join(Tag).filter(
Tag.id == Movie.tag_id,
Movie.id == int(movie_id)
).first_or_404()
if request.method == 'GET':
movie.play_num += 1
db.session.commit()
form = CommentForm()
if 'login_user' not in session:
form.submit.render_kw = {
'disabled': "disabled",
"class": "btn btn-success",
"id": "btn-sub"
}
if form.validate_on_submit() and 'login_user' in session:
data = form.data
comment = Comment(
content=data['content'],
movie_id=movie.id,
user_id=session['login_user_id']
)
db.session.add(comment)
movie.comment_num += 1
db.session.commit()
flash('评论成功', category='ok')
return redirect(url_for('home.play', movie_id=movie.id))
return render_template('home/play.html', movie=movie, form=form)
修改play.html增加评论模板
{% if 'login_user' not in session %}
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<strong>请先<a href="{{ url_for('home.login') }}" class="text-info">登录</a>,才可参与评论!</strong>
</div>
{% endif %}
<ol class="breadcrumb" style="margin-top:6px;">
<li>全部评论({{ movie.comment_num }})</li>
</ol>
<form role="form" style="margin-bottom:6px;" method="post">
<div class="form-group">
<div>
<label for="input_content">{{ form.content.label }}</label>
{{ form.content }}
</div>
<div class="col-xs-12" id="error_content"></div>
</div>
{{ form.csrf_token }}
{{ form.submit }}
{% if 'login_user' in session %}
<a class="btn btn-danger" id="btn-col"><span class="glyphicon glyphicon-heart"></span> 收藏电影</a>
{% endif %}
</form>
电影评论列表
播放页面增加爱电影评论列表
修改play增加评论列表视图
@home.route('/play/<int:movie_id>/page/<int:page>/', methods=['GET', 'POST'])
def play(movie_id=None, page=None):
movie = Movie.query.join(Tag).filter(
Tag.id == Movie.tag_id,
Movie.id == int(movie_id)
).first_or_404()
if request.method == 'GET' and int(request.args.get('page', 0)) != 1:
movie.play_num += 1 # 访问量加1
db.session.commit()
form = CommentForm()
if 'login_user' not in session:
form.submit.render_kw = {
'disabled': "disabled",
"class": "btn btn-success",
"id": "btn-sub"
}
if form.validate_on_submit() and 'login_user' in session:
data = form.data
comment = Comment(
content=data['content'],
movie_id=movie.id,
user_id=session['login_user_id']
)
db.session.add(comment)
movie.comment_num += 1
db.session.commit()
flash('评论成功', category='ok')
return redirect(url_for('home.play', movie_id=movie.id, page=1))
if page is None:
page = 1
# 查询的时候关联标签,采用join来加进去,多表关联用filter,过滤用filter_by
page_comments = Comment.query.join(
Movie
).join(
User
).filter(
Movie.id == movie.id,
User.id == Comment.user_id
).order_by(
Comment.add_time.desc()
).paginate(page=page, per_page=10)
return render_template('home/play.html', movie=movie, form=form, page_comments=page_comments)
修改play.html评论列表模板
<ul class="commentList">
{% for comment in page_comments.items %}
<li class="item cl">
<a href="{{ url_for('home.user') }}">
<i class="avatar size-L radius">
{% if comment.user.face %}
<img alt="50x50" src="{{ url_for('static', filename='user/' + comment.user.face) }}" class="img-circle" style="border:1px solid #abcdef;width: 50px">
{% else %}
<img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
{% endif %}
</i>
</a>
<div class="comment-main">
<header class="comment-header">
<div class="comment-meta">
<a class="comment-author" href="{{ url_for('home.user') }}">{{ comment.user.name }}</a>
评论于
<time title="{{ comment.add_time }}" datetime="{{ comment.add_time }}">{{ comment.add_time }}</time>
</div>
</header>
<div class="comment-body">
<p>{{ comment.content }}</p>
</div>
</div>
</li>
{% endfor %}
</ul>
<div class="col-md-12 text-center">
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="{{ url_for('home.play', movie_id=movie.id, page=1) }}" aria-label="First">
<span aria-hidden="true">首页</span>
</a>
</li>
{% if page_comments.has_prev %}
<li>
<a href="{{ url_for('home.play', movie_id=movie.id, page=page_comments.prev_num) }}" aria-label="Previous">
<span aria-hidden="true">上一页</span>
</a>
</li>
{% endif %}
{%- for page in page_comments.iter_pages() %}
{% if page %}
{% if page != page_comments.page %}
<li><a href="{{ url_for('home.play', movie_id=movie.id, page=page) }}">{{ page }}</a></li>
{% else %}
<li><a style="background: #0d6aad; color: white">{{ page }}</a></li>
{% endif %}
{% endif %}
{%- endfor %}
{% if page_comments.has_next %}
<li>
<a href="{{ url_for('home.play', movie_id=movie.id, page=page_comments.next_num) }}" aria-label="Next">
<span aria-hidden="true">下一页</span>
</a>
</li>
{% endif %}
<li>
<a href="{{ url_for('home.play', movie_id=movie.id, page=page_comments.pages) }}" aria-label="Last">
<span aria-hidden="true">尾页</span>
</a>
</li>
</ul>
</nav>
</div>
修改index.html跳转播放链接
<a href="{{ url_for('home.play', movie_id=movie.id, page=1) }}" class="btn btn-primary" target="_blank" role="button"><span class="glyphicon glyphicon-play"></span> 播放</a>
很赞哦! (1)
相关文章
文章交流
- emoji
0人参与,0条评论
当前用户
未登录,点击 登录专题目录
- 【Flask微电影】01.环境搭建项目目录分析
- 【Flask微电影】02.使用蓝图构建项目目录
- 【Flask微电影】03.安装mysql数据库及配置
- 【Flask微电影】04.定义数据模型,生成数据表和初始用户
- 【Flask微电影】05.搭建前台页面-会员登录注册和会员中心
- 【Flask微电影】06.搭建前台页面-电影列表、搜索播放页面
- 【Flask微电影】07.搭建后台页面-后台登陆、后台主页页面
- 【Flask微电影】08.搭建后台页面-密码修改、主页控制面板
- 【Flask微电影】09.搭建后台页面-标签管理、电影管理、预告管理
- 【Flask微电影】10.搭建后台页面-会员管理、评论管理
- 【Flask微电影】11.搭建后台页面-收藏管理、日志管理
- 【Flask微电影】12.搭建后台页面-权限管理、角色管理、管理员管理
- 【Flask微电影】13.管理员登录、退出、装饰器进行访问控制
- 【Flask微电影】14.电影标签管理:增删查改
- 【Flask微电影】15.电影内容管理:增删查改
- 【Flask微电影】16.电影预告管理:增删查改
- 【Flask微电影】17.网站会员管理:查看会员和删除
- 【Flask微电影】18.电影评论管理:评论列表和删除
- 【Flask微电影】19.用户收藏电影:收藏列表和删除
- 【Flask微电影】20.会员修改密码,表单下拉列表同步数据库
- 【Flask微电影】21.基于角色访问控制-权限管理:增删查改
- 【Flask微电影】22.基于角色访问控制-角色管理:增删查改
- 【Flask微电影】23.基于角色访问控制-管理员管理和访问权限控制
- 【Flask微电影】24.前台会员中心,会员注册登录退出
- 【Flask微电影】25.会员中心登录要求,会员资料和密码修改
- 【Flask微电影】26.电影会员评论、会员登录日志、会员收藏列表
- 【Flask微电影】27.电影页面上映轮播预告,搜索、标签筛选列表
- 【Flask微电影】28.电影播放详情,评论,显示评论列表
- 【Flask微电影】29.电影收藏功能,增加电影播放弹幕
- 【Flask微电影】30.项目完成检查,nginx部署网站