1.后台管理之电影预告管理

1.1 定义电影预告表单

在app的admin目录的forms.py文件中,定义电影预告表单

# 预告表单
class PreviewForm(FlaskForm):title = StringField(label="预告标题",validators=[DataRequired("请输入预告标题!")],description="预告标题",render_kw={"class": "form-control","placeholder": "请输入预告标题!",})logo = FileField(label="预告封面",validators=[DataRequired("请上传预告封面!")],description="预告封面",)submit = SubmitField("编辑",render_kw={"class": "btn btn-primary",})

1.2 电影管理之所有电影预告列表

1.2.1 电影管理之电影预告列表视图函数

在admin目录下的views.py文件中定义电影预告列表视图函数

电影预告列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route('/preview/list/<int:page>', methods=["GET"])
@admin_login_req
@admin_auth
def preview_list(page=None):if page is None:page = 1page_data = Preview.query.order_by(Preview.addtime.desc()).paginate(page=page, per_page=10)return render_template("admin/preview_list.html", page_data=page_data)

1.2.2 电影管理之电影预告列表前端页面

电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果

{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}{% block content %}<section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li><li class="active">预告列表</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header"><h3 class="box-title">预告列表</h3><div class="box-tools"><div class="input-group input-group-sm" style="width: 150px;"><input type="text" name="table_search" class="form-control pull-right"placeholder="请输入关键字..."><div class="input-group-btn"><button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button></div></div></div></div><div class="box-body table-responsive no-padding">{% for msg in get_flashed_messages(category_filter=["ok"]) %}<div class="alert alert-success alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4><i class="icon fa fa-check"></i> 操作成功</h4>{{ msg }}</div>{% endfor %}<table class="table table-hover"><tbody><tr><th>编号</th><th>预告标题</th><th>预告封面</th><th>添加时间</th><th>操作事项</th></tr>{% for v in page_data.items %}<tr><td>{{ v.id }}</td><td>{{ v.title }}</td><td><img data-src="{{ url_for("static",filename="uploads/"+v.logo) }}"class="img-responsive center-block" alt=""></td><td>{{ v.addtime }}</td><td><a href="{{ url_for('admin.preview_edit',id=v.id) }}"class="label label-success">编辑</a>&nbsp;<a href="{{ url_for('admin.preview_del',id=v.id) }}" class="label label-danger">删除</a></td></tr>{% endfor %}</tbody></table></div><div class="box-footer clearfix">{{ pg.page(page_data,"admin.preview_list") }}</div></div></div></div></section>
{% endblock %}{% block js %}<script>$(document).ready(function () {$("#g-4").addClass('active');$("#g-4-2").addClass('active');});</script>
{% endblock %}

1.3 电影管理之添加电影预告

1.3.1 电影管理之添加电影预告视图函数

在admin目录下的views.py文件中定义添加电影预告视图函数

添加电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route('/preview/add/', methods=["GET", "POST"])
@admin_login_req
@admin_auth
def preview_add():form = PreviewForm()if form.validate_on_submit():data = form.datafile_logo = secure_filename(form.logo.data.filename)if not os.path.exists(app.config["UP_DIR"]):os.makedirs(app.config["UP_DIR"])os.chmod(app.config["UP_DIR"])logo = change_filename(file_logo)form.logo.data.save(app.config["UP_DIR"] + logo)preview = Preview(title=data.get("title"),logo=logo)db.session.add(preview)db.session.commit()flash("添加预告成功!", "ok")return redirect(url_for("admin.preview_add"))return render_template("admin/preview_add.html", form=form)

1.3.2 电影管理之添加电影预告前端页面

电影预告列表页面继承admin.html页面

{% extends 'admin/admin.html' %}{% block content %}<section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li><li class="active">添加预告</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header with-border"><h3 class="box-title">添加预告</h3></div><form role="form"><div class="box-body">{% for msg in get_flashed_messages(category_filter=["ok"]) %}<div class="alert alert-success alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4><i class="icon fa fa-check"></i> 操作成功</h4>{{ msg }}</div>{% endfor %}<div class="form-group"><label for="input_title">{{ form.title.label }}</label>{{ form.title }}{% for err in form.title.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group"><label for="input_logo">{{ form.logo.label }}</label>{{ form.logo }}{% for err in form.logo.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}<img data-src="holder.js/700x320" style="margin-top:5px;" class="img-responsive"alt=""></div></div><div class="box-footer">{{ form.csrf_token }}{{ form.submit }}</div></form></div></div></div></section>
{% endblock %}{% block js %}<script src="{{ url_for('static',filename='jwplayer/jwplayer.js') }}"></script><script type="text/javascript">jwplayer.key = "P9VTqT/X6TSP4gi/hy1wy23BivBhjdzVjMeOaQ==";</script><script type="text/javascript">jwplayer("moviecontainer").setup({flashplayer: "url_for('static',filename='jwplayer/jwplayer.flash.swf')",playlist: [{file: "url_for('static',filename='video/htpy.mp4')",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": 200,height: 250,width: 387,});</script><script>$(document).ready(function () {$('#input_release_time').datepicker({autoclose: true,format: 'yyyy-mm-dd',language: 'zh-CN',});});</script><script>$(document).ready(function () {$("#g-4").addClass('active');$("#g-4-1").addClass('active');});</script>
{% endblock %}

1.4 电影管理之编辑电影预告

1.4.1 电影管理之编辑电影预告视图函数

在admin目录下的views.py文件中定义编辑电影预告视图函数

编辑电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route("/preview/edit/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def preview_edit(id=None):form = PreviewForm()form.logo.validators = []preview = Preview.query.get_or_404(int(id))if request.method == "GET":form.title.data = preview.titleif form.validate_on_submit():data = form.dataif form.logo.data.filename != "":file_logo = secure_filename(form.logo.data.filename)preview.logo = change_filename(file_logo)form.logo.data.save(app.config["UP_DIR"] + preview.logo)preview.title = data.get("title")db.session.add(preview)db.session.commit()flash("修改预告成功!", "ok")return redirect(url_for("admin.preview_edit", id=id))return render_template("admin/preview_edit.html", form=form, preview=preview)

1.4.2 电影管理之编辑电影预告前端页面

电影预告列表页面继承admin.html页面

{% extends "admin/admin.html" %}{% block content %}<!--内容--><section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li><li class="active">修改预告</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header with-border"><h3 class="box-title">修改预告</h3></div><form role="form" method="post" enctype="multipart/form-data"><div class="box-body"><!--消息闪现-->{% for msg in get_flashed_messages(category_filter=["ok"]) %}<div class="alert alert-success alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4><i class="icon fa fa-check"></i> 操作成功</h4>{{ msg }}</div>{% endfor %}<div class="form-group"><label for="input_title">{{ form.title.label }}</label>{{ form.title }}<!--报错信息-->{% for err in form.title.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group"><label for="input_logo">{{ form.logo.label }}</label>{{ form.logo }}<!--报错信息-->{% for err in form.logo.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}<img src="{{ url_for('static',filename='uploads/'+preview.logo) }}"style="margin-top:5px;" class="img-responsive"alt=""></div></div><div class="box-footer">{{ form.submit }}{{ form.csrf_token }}</div></form></div></div></div></section><!--内容-->
{% endblock %}{% block js %}<script>$(document).ready(function () {$("#g-4").addClass("active");$("#g-4-1").addClass("active");});</script>
{% endblock %}

1.5 电影管理之删除电影预告

1.5.1 电影管理之删除电影视预告图函数

在admin目录下的views.py文件中定义删除电影预告视图函数

删除电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route("/preview/del/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def preview_del(id=None):preview = Preview.query.get_or_404(int(id))db.session.delete(preview)db.session.commit()flash("删除预告成功!", "ok")return redirect(url_for("admin.preview_list", page=1))

1.后台管理之会员管理

2.1 会员管理之所有会员列表

2.1.1 会员管理之会员列表视图函数

在admin目录下的views.py文件中定义会员列表视图函数

会员列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route('/user/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def user_list(page=None):if page is None:page = 1page_data = User.query.order_by(User.addtime.asc()).paginate(page=page, per_page=3)return render_template("admin/user_list.html", page_data=page_data)

2.1.2 会员管理之会员列表前端页面

电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果

{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}{% block content %}<section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 会员管理</a></li><li class="active">会员列表</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header"><h3 class="box-title">会员列表</h3><div class="box-tools"><div class="input-group input-group-sm" style="width: 150px;"><input type="text" name="table_search" class="form-control pull-right"placeholder="请输入关键字..."><div class="input-group-btn"><button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button></div></div></div></div><div class="box-body table-responsive no-padding"><!--消息提示-->{% for msg in get_flashed_messages(category_filter=["ok"]) %}<div class="alert alert-success alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4><i class="icon fa fa-check"></i> 操作成功</h4>{{ msg }}</div>{% endfor %}<table class="table table-hover"><tbody><tr><th>编号</th><th>昵称</th><th>邮箱</th><th>手机</th><th>头像</th><th>注册时间</th><th>操作事项</th></tr>{% for v in page_data.items %}<tr><td>{{ v.id }}</td><td>{{ v.name }}</td><td>{{ v.email }}</td><td>{{ v.face }}</td><td><img src="{{ url_for('static',filename='uploads/users/%s'% v.face) }}"style="width:50px;" class="img-responsive center-block" alt=""></td><td>{{ v.addtime }}</td><td><a class="label label-success" href="{{ url_for('admin.user_view',id=v.id) }}">查看</a>&nbsp;<a class="label label-danger" href="{{ url_for('admin.user_del',id=v.id) }}">删除</a></td></tr>{% endfor %}</tbody></table></div><div class="box-footer clearfix">{{ pg.page(page_data,'admin.user_list') }}</div></div></div></div></section>
{% endblock %}{% block js %}$(document).ready(function () {$("#g-5").addClass('active');$("#g-5-1").addClass('active');});
{% endblock %}

2.2 会员管理之查看会员

2.2.1 会员管理之查看会员视图函数

在admin目录下的views.py文件中定义查看会员详细信息视图函数

查看会员详细信息视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route('/user/view/<int:id>/', methods=['GET'])
@admin_login_req
@admin_auth
def user_view(id=None):user = User.query.get_or_404(int(id))return render_template("admin/user_view.html", user=user)

2.2.2 会员管理之查看会员前端页面

电影预告列表页面继承admin.html页面

{% extends 'admin/admin.html' %}{% block css %}<style>.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {vertical-align: middle;text-align: left;}.td_bd {font-weight: bold;}</style>
{% endblock %}
{% block content %}<section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 会员管理</a></li><li class="active">查看会员</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header"><h3 class="box-title">会员详情</h3></div><div class="box-body table-responsive no-padding"><table class="table table-hover"><tbody><tr><td class="td_bd">编号:</td><td>{{ user.id }}</td></tr><tr><td class="td_bd">昵称:</td><td>{{ user.name }}</td></tr><tr><td class="td_bd">邮箱:</td><td>{{ user.email }}</td></tr><tr><td class="td_bd">手机:</td><td>{{ user.phone }}</td></tr><tr><td class="td_bd">头像:</td><td><img src="{{ url_for('static',filename='uploads/users/' + user.face) }}"style="width:100px;" class="img-responsive" alt=""></td></tr><tr><td class="td_bd">注册时间:</td><td>{{ user.addtime }}</td></tr><tr><td class="td_bd">唯一标志符:</td><td>{{ user.uuid }}</td></tr><tr><td class="td_bd">个性简介:</td><td>{{ user.info }}</td></tr></tbody></table></div></div></div></div></section>
{% endblock %}{% block js %}$(document).ready(function () {$("#g-5").addClass('active');$("#g-5-1").addClass('active');});
{% endblock %}

2.3 会员管理之删除会员

2.3.1 会员管理之删除会员视图函数

在admin目录下的views.py文件中定义删除会员视图函数

删除会员视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route("/user/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def user_del(id=None):user = User.query.get_or_404(int(id))db.session.delete(user)db.session.commit()flash("删除会员成功", "ok")return redirect(url_for('admin.user_list', page=1))

3.后台管理之电影评论管理

3.1 电影管理之所有电影评论列表

3.1.1 电影管理之电影评论列表视图函数

在admin目录下的views.py文件中定义电影评论列表视图函数

电影评论列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route('/comment/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def comment_list(page=None):if page is None:page = 1page_data = Comment.query.join(Movie).join(User).filter(Movie.id == Comment.movie_id,User.id == Comment.user_id).order_by(Comment.addtime).paginate(page=page, per_page=10)return render_template("admin/comment_list.html", page_data=page_data)

3.1.2 电影管理之电影评论列表前端页面

电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果

{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}{% block content %}<section class="content-header"><h1>微电影管理系统</h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 评论管理</a></li><li class="active">评论列表</li></ol></section><section class="content" id="showcontent"><div class="row"><div class="col-md-12"><div class="box box-primary"><div class="box-header with-border"><h3 class="box-title">评论列表</h3><div class="box-tools"><div class="input-group input-group-sm" style="width: 150px;"><input type="text" name="table_search" class="form-control pull-right"placeholder="请输入关键字..."><div class="input-group-btn"><button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button></div></div></div></div><div class="box-body box-comments"><!--消息提示-->{% for msg in get_flashed_messages(category_filter=["ok"]) %}<div class="alert alert-success alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4><i class="icon fa fa-check"></i> 操作成功</h4>{{ msg }}</div>{% endfor %}{% for v in page_data.items %}<div class="box-comment"><img class="img-circle img-sm"src="{{ url_for('static',filename='uploads/users/%s' % v.user.face) }}" alt="User Image"><div class="comment-text"><span class="username">{{ v.user.name }}<span class="text-muted pull-right"><i class="fa fa-calendar" aria-hidden="true"></i>&nbsp;{{ v.addtime }}</span></span>关于电影<a>《{{ v.movie.title }}》</a>的评论:{{ v.content }}<br><a href="{{ url_for('admin.comment_del',id=v.id) }}" class="label label-danger pull-right">删除</a></div></div>{% endfor %}</div><div class="box-footer clearfix">{{ pg.page(page_data,"admin.comment_list") }}</div></div></div></div></section>
{% endblock %}{% block js %}$(document).ready(function () {$("#g-6").addClass('active');$("#g-6-1").addClass('active');});
{% endblock %}

3.2 电影管理之删除电影评论

3.2.1 电影管理之删除电影评论视图函数

在admin目录下的views.py文件中定义删除电影评论视图函数

删除电影评论视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route("/comment/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def comment_del(id=None):comment = Comment.query.get_or_404(int(id))db.session.delete(comment)db.session.commit()flash("删除评论成功", "ok")return redirect(url_for("admin.comment_list", page=1))

注:本文转载于:https://www.cnblogs.com/renpingsheng/p/9153347.html

Python-Flask开发微电影网站(八)相关推荐

  1. Flask开发微电影网站(八)

    1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 ​ # 预告表单 class PreviewForm(FlaskForm):t ...

  2. Flask开发微电影网站(一)

    1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定 ...

  3. Flask开发微电影网站(三)

    页面完成后的最终布局 电影视频网站首页面 会员登录页面 会员注册页面 点击退出和会员按钮,直接进入会员登录页面 视频播放页面 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和 ...

  4. Flask开发微电影网站(五)

    后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧 ...

  5. Flask开发微电影网站(七)

    1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm):title = Str ...

  6. Flask开发微电影网站(六)

    1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ...

  7. Flask开发微电影网站(二)

    1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库 create ...

  8. Flask开发微电影网站(十)

    1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm):name = ...

  9. 用python开发一个影视网站_GitHub - lyzhanghai/movie_project: 一个使用Python+Flask开发的微电影网站...

    微电影网站搭建手册 简介 这是一个使用Python语言和Flask框架搭建的微电影网站.网站分前台和后台,前台面向用户,主要功能有注册会员.搜索电影.观看电影.收藏及评论电影:后台面向网站管理人员,主 ...

最新文章

  1. sql和mysql语法_SQL 与MySQL-基本语法介绍
  2. summary+plan
  3. Zookeeper的安装部署,zookeeper参数配置说明,集群搭建,查看集群状态
  4. Java Set基础知识
  5. Okhttp实用封装
  6. c语言题目1120,九度题目1120:全排列
  7. r 选取从小到大的数据_玩点特别的!AI打造可编辑数据图表!
  8. 系出名门Android(9) - 数据库支持(SQLite), 内容提供器(ContentProvider)
  9. JSP文件的中文在浏览器上显示乱码解决方法
  10. 浙江大学深蓝质感简约答辩PPT模板
  11. php 图片木马,php图片木马实现原理
  12. 济南:建设中国软件名城
  13. JAVA后台开发提升注解篇 @Deprecated
  14. Git简单生成生成公钥和私钥方法
  15. 凤凰os可以运行linux软件吗,手机玩游戏不爽?来试试Phoenix OS凤凰系统
  16. Medkoo Biosciences艾美捷 甲氧沙林
  17. 杨辉三角 (java语言)
  18. java中String和数组的长度
  19. 哪个牌子的电视盒子好用?罗鹏数码盘点2023电视盒子排名
  20. 长江流域土地利用与土地覆盖数据(1985-2020)

热门文章

  1. postgresql java驱动_PostgreSQL的JDBC驱动和URL
  2. Day25(线程同步安全问题,SellticketLock,DieLock,ThredGroup,ThreadPool,Timer,线程安全的类,匿名内部类的形式创建线程对象)
  3. 删除GHOSTwin7桌面顽固IE图标
  4. Locating Restriction Sites
  5. 家用计算机的ram怎么清理,计算机内存怎么清理
  6. 【渝粤教育】广东开放大学 计算机导论 形成性考核 (51)
  7. 代码不朽笔记: 编写简单的代码单元
  8. 最小拍有纹波系统仿真实验(计控实验四simulink)
  9. CRM为3Com带来什么?
  10. nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合