权限管理
- 模型: Auth
- 表单: AuthForm
- 请求方法: GET, POST
- 访问控制: admin_login_req
添加涉及文件:
E:\study\mooc\MicroMovie200731\app\admin\forms.py 创建模型
E:\study\mooc\MicroMovie200731\app\admin\forms.py 视图函数
E:\study\mooc\MicroMovie200731\app\templates\admin\auth_add.html 前端页面
E:\study\mooc\MicroMovie200731\app\templates\admin\menu.html 修改右侧菜单url_for
创建模型
class AuthForm(FlaskForm): name = StringField( label="权限", validators=[ DataRequired(message="请输入权限名称~~~!") ], description="权限", render_kw={ "class": "form-control", "id": "input_name", "placeholder": "请输入权限名称!", } ) url = StringField( label="权限地址", validators=[ DataRequired(message="请输入权限地址~~~!") ], description="权限地址", render_kw={ "class": "form-control", "id": "input_name", "placeholder": "请输入权限地址!", } ) submit = SubmitField( label="编辑/添加", render_kw={ # 设置生成前端"账号标签"对应的html属性 "class": "btn btn-primary", } )
视图函数
# 权限管理 @admin.route("/auth/add/", methods=['GET', 'POST']) # 添加权限 @admin_login_req def auth_add(): form = AuthForm() if form.validate_on_submit(): data = form.data # 查重 auth = Auth.query.filter_by(name=data["name"]).count() if auth == 1: flash("权限已经存在,请重新输入!", "err") # 失败消息闪现 return redirect(url_for("admin.auth_add")) # 存库 auth = Auth( name=data['name'], url=data['url'] ) db.session.add(auth) db.session.commit() flash("添加权限成功!", "ok") return render_template("admin/auth_add.html", form=form) @admin.route("/auth/list/<int:page>/", methods=['GET']) # 权限列表 @admin_login_req def auth_list(page=None): if page is None: page = 1 page_data = Auth.query.order_by(Auth.addtime.desc()).paginate(page=page, per_page=10) return render_template("admin/auth_list.html", page=1, page_data=page_data) # 删除权限 @admin.route("/auth/del/<int:id>/", methods=['GET']) @admin_login_req def auth_del(id=None): auth = Auth.query.get_or_404(int(id)) db.session.delete(auth) db.session.commit() flash("删除权限成功!", "ok") return redirect(url_for("admin.auth_list", page=1)) # 编辑权限 @admin.route("/auth/edit/<int:id>/", methods=['GET', 'POST']) # 编辑权限 @admin_login_req def auth_edit(id=None): form = AuthForm() auth = Auth.query.get_or_404(id) if form.validate_on_submit(): data = form.data # 查重 auth_count = Auth.query.filter_by(name=data["name"]).count() # filter_by用于单表查询 if auth.name != data["name"] and auth_count == 1: flash("权限已经存在,请重新输入!", "err") # 失败消息闪现 return redirect(url_for("admin.auth_edit", id=id)) auth.name = data["name"] # 存库操作 auth.url = data["url"] db.session.add(auth) db.session.commit() flash("权限修改成功!", "ok") # 成功消息闪现 return redirect(url_for("admin.auth_edit", id=id)) return render_template("admin/auth_edit.html", form=form, auth=auth)
界面效果
报错处理
编辑权限时候的一个报错问题:
报错:
TypeError: __call__() takes 1 positional argument but 2 were given
出错文件:E:\study\mooc\MicroMovie200731\app\templates\admin\auth_edit.html
出错点:
处理方法: