1.后台管理之角色管理

1.1 角色管理之定义角色表单

在app的admin目录的forms.py文件中,定义角色表单

# 角色表单
class RoleForm(FlaskForm):name = StringField(label="角色名称",validators=[DataRequired("请输入角色名称!")],description="角色名称",render_kw={"class": "form-control","placeholder": "请输入角色名称!"})auths = SelectField(label="权限列表",validators=[DataRequired("请选择权限列表!")],coerce=int,choices=[(v.id, v.name) for v in auth_list],description="权限列表",render_kw={"class": "form-control"})submit = SubmitField("编辑",render_kw={"class": "btn btn-primary",})

1.2 角色管理之所有角色列表

1.2.1 角色管理之所有角色列表视图函数

在admin目录下的views.py文件中定义所有角色列表视图函数

所有角色列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/role/list/<int:page>/', methods=["GET", "POST"])
@admin_login_req
@admin_auth
def role_list(page=None):if page is None:page = 1page_data = Role.query.order_by(Role.id).paginate(page=page, per_page=10)return render_template("admin/role_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></tr>{% for v in page_data.items %}<tr><td>{{ v.id }}</td><td>{{ v.name }}</td><td>{{ v.addtime }}</td><td><a href="{{ url_for("admin.role.edit",id=v.id) }}" class="label label-success">编辑</a>&nbsp;<a href="{{ url_for("admin.role.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.role_list") }}</div></div></div></div></section><!--内容-->
{% endblock %}{% block js %}$(document).ready(function () {$("#g-10").addClass('active');$("#g-10-2").addClass('active');});
{% endblock %}

1.3 角色管理之添加角色

1.3.1 角色管理之添加角色视图函数

在admin目录下的views.py文件中定义添加角色视图函数

添加角色视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/role/add/', methods=["GET", "POST"])
@admin_login_req
@admin_auth
def role_add():form = RoleForm()if form.validate_on_submit():data = form.datarole = Role(name=data.get("name"),auths=",".join(map(lambda v: str(v), data.get("auths"))))db.session.add(role)db.session.commit()flash("添加角色成功!", "ok")return redirect(url_for("admin.role_list", page=1))return render_template("admin/role_add.html", form=form)

1.3.2 角色管理之添加角色前端页面

添加角色前端页面继承admin.html页面

{% extends 'admin/admin.html' %}{% block css %}<style>#auth_list .col-md-12, #auth_list .col-md-2 {padding: 0px;}</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 with-border"><h3 class="box-title">添加角色</h3></div><form role="form" method="post"><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_name">{{ form.name.label }}</label>{{ form.name }}<!--报错信息-->{% for err in form.name.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group" id="auth_list"><div class="col-md-12"><label>{{ form.auths.label }}</label></div>{{ form.auths }}<!--报错信息-->{% for err in form.auths.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div></div><div class="box-footer">{{ form.csrf_token }}{{ form.submit }}</div></form></div></div></div></section>
{% endblock %}{% block js %}$(document).ready(function () {$("#g-10").addClass('active');$("#g-10-1").addClass('active');});
{% endblock %}

1.4 角色管理之编辑角色

1.4.1 角色管理之编辑角色视图函数

在admin目录下的views.py文件中定义编辑角色视图函数

编辑角色视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route("/role/edit/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def role_edit(id=None):form = RoleForm()role = Role.query.get_or_404(id)if request.method == 'GET':auths = role.authsform.auths.data = list(map(lambda v: int(v), auths.split(",")))if form.validate_on_submit():data = form.datarole.name = data.get("name")role.auths = ",".join(map(lambda v: str(v), data.get('auths')))db.session.add(role)db.session.commit()flash("修改角色成功!", "ok")return render_template("admin/role_edit.html", form=form, role=role)

1.4.2 角色管理之编辑角色前端页面

编辑角色前端页面继承admin.html页面

{% extends 'admin/admin.html' %}{% block css %}<style>#auth_list .col-md-12, #auth_list .col-md-2 {padding: 0px;}</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 with-border"><h3 class="box-title">添加角色</h3></div><form role="form" method="post"><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_name">{{ form.name.label }}</label>{{ form.name(value=role.name) }}<!--报错信息-->{% for err in form.name.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group" id="auth_list"><div class="col-md-12"><label>{{ form.auths.label }}</label></div>{{ form.auths }}<!--报错信息-->{% for err in form.auths.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div></div><div class="box-footer">{{ form.csrf_token }}{{ form.submit }}</div></form></div></div></div></section>
{% endblock %}{% block js %}$(document).ready(function () {$("#g-10").addClass('active');$("#g-10-1").addClass('active');});
{% endblock %}

1.5 角色管理之删除角色

1.5 角色管理之删除角色视图函数

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

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

@admin.route("/role/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def role_del(id=None):role = Role.query.filter_by(id=id).first_or_404()db.session.delete(role)db.session.commit()flash("角色删除成功!", "ok")return redirect(url_for("admin.role_list", page=1))

2.后台管理之管理员管理

2.1 定义管理员表单

在app的admin目录的forms.py文件中,定义管理员表单

# 管理员列表
class AdminForm(FlaskForm):name = StringField(label="用户名",validators=[DataRequired("请输入管理员用户名!")],description="用户名",render_kw={"class": "form-control","placeholder": "请输入管理员用户名!"},)pwd = PasswordField(label="管理员密码",validators=[DataRequired("请输入管理员密码!")],description="管理员密码",render_kw={"class": "form-control","placeholder": "请输入管理员密码!"},)repwd = PasswordField(label="管理员重复输入密码",validators=[DataRequired("请管理员重复输入密码!"),EqualTo("pwd", message="两次输入密码不一致!")],description="管理员重复输入密码",render_kw={"class": "form-control","placeholder": "请管理员重复输入密码!"},)role_id = SelectField(label="所属角色",validators=[DataRequired("请选择所属角色!")],coerce=int,choices=[(v.id, v.name) for v in role_list],render_kw={"class": "form-control"})submit = SubmitField("编辑",render_kw={"class": "btn btn-primary",})

2.2 管理员管理之所有管理员列表

2.2.1 管理员管理之管理员列表视图函数

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

所有管理员列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/admin/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def admin_list(page=None):if page is None:page = 1page_data = Admin.query.join(Role).filter(Role.id == Admin.role_id).order_by(Admin.id).paginate(page=page, per_page=10)print("page_data:", page_data)return render_template("admin/admin_list.html", page_data=page_data)

2.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.name }}</td>{% if v.is_super ==0 %}<td>超级管理员</td>{% else %}<td>普通管理员</td>{% endif %}<td>{{ v.role.name }}</td><td>{{ v.addtime }}</td></tr>{% endfor %}</tbody></table></div><div class="box-footer clearfix">{{ pg.page(page_data,"admin.admin_list") }}</div></div></div></div></section><!--内容-->
{% endblock %}{% block js %}$(document).ready(function () {$("#g-11").addClass('active');$("#g-11-2").addClass('active');});
{% endblock %}

2.3 管理员管理之添加管理员

2.3.1 管理员管理之添加管理员视图函数

在admin目录下的views.py文件中定义添加管理员视图函数

添加管理员视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/admin/add/', methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def admin_add():form = AdminForm()from werkzeug.security import generate_password_hashif form.validate_on_submit():data = form.dataadmin = Admin(name=data.get("name"),pwd=generate_password_hash(data.get('pwd')),role_id=data.get("role_id"),is_super=1,)db.session.add(admin)db.session.commit()flash("添加管理员成功!", "ok")return redirect(url_for('admin.admin_list', page=1))return render_template("admin/admin_add.html", form=form)

2.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_name">{{ form.name.label }}</label>{{ form.name }}<!--报错信息-->{% for err in form.name.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group"><label for="input_pwd">{{ form.pwd.label }}</label>{{ form.pwd }}<!--报错信息-->{% for err in form.pwd.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group"><label for="input_re_pwd">{{ form.repwd.label }}</label>{{ form.repwd }}<!--报错信息-->{% for err in form.repwd.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div><div class="form-group"><label for="input_role_id">{{ form.role_id.label }}</label>{{ form.role_id }}<!--报错信息-->{% for err in form.role_id.errors %}<div class="col-md-12"><font style="color:red">{{ err }}</font></div>{% endfor %}</div></div><div class="box-footer">{{ form.csrf_token }}{{ form.submit }}</div></form></div></div></div></section><!--内容-->
{% endblock %}{% block js %}$(document).ready(function () {$("#g-11").addClass('active');$("#g-11-1").addClass('active');});
{% endblock %}

转载于:https://www.cnblogs.com/renpingsheng/p/9161802.html

Flask开发微电影网站(十)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Python-Flask开发微电影网站(一)

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

  9. Python-Flask开发微电影网站(五)

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

最新文章

  1. oracle Ratio_to_report的用法
  2. fetch整个仓库 github_git fetch 的简单用法:更新远程代码到本地仓库
  3. SSM整合时Maven项目的pom.xml版本兼容的代码备份
  4. OpenDDS用idl生成自定义数据类型时遇到的一个问题
  5. paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键
  6. 透彻理解回文~单链表的逆序~
  7. fastdfs-配合nginx-麻烦的
  8. mysql忘记密码怎么办?
  9. 一键洞察全量SQL ,远离性能异常
  10. 机械革命深海泰坦X1(1050T)触控板用不了三指
  11. java aes加密 cbc_AES加密,CBC模式,0填充
  12. 【FLEX教程】#007 如何让JS调用SWF里的方法
  13. 可以自我学习的AI五子棋
  14. Flutter 长截屏适配 Miui 系统,一点都不难
  15. 百度网盘破解版Pandownload开发者被抓
  16. 一寸照纯红色底图片_纯红色背景
  17. sql分组排序,查询每组第一个数据
  18. 微信中的dat文件到底是什么
  19. 【重点】心田花开:三年级教材知识点汇总
  20. android广播教程,Android学习笔记(广播机制)

热门文章

  1. ACM模板——差分约束
  2. hbuilder的aptana php插件无法提示命名空间之外函数和对象的解决办法
  3. Windows下深度学习标注工具LabelImg安装和使用指南
  4. java8与函数编程资料
  5. 冒泡排序算法的 JavaScript 实现
  6. Codeforces Round #381 (Div. 2)
  7. 利用virt-manager,xmanager, xshell启动界面来管理虚拟机
  8. android支付宝支付开发过程
  9. GCD中的队列与任务
  10. mysql select语句执行顺序