您现在的位置是: 网站首页 >Flask >Flask搭建微电影视频网站 Flask
【Flask微电影】20.会员修改密码,表单下拉列表同步数据库
admin2018年11月11日 20:25 【Flask | Html | Python 】 1684人已围观
Flask搭建微电影视频网站简介 利用Flask搭建微电影视频网站 Github地址:https://github.com/xyliurui/FlaskMovie
## 修改密码 ### 修改密码 #### 创建修改密码的表单 ```python class PwdForm(FlaskForm): old_pwd = PasswordField( label='旧密码', validators=[ DataRequired('请输入旧密码!') ], description='旧密码', render_kw={ 'class': "form-control", 'placeholder': "请输入旧密码", 'required': "required" } ) new_pwd = PasswordField( label='新密码', validators=[ DataRequired('请输入新密码!') ], description='新密码', render_kw={ 'class': "form-control", 'placeholder': "请输入新密码", 'required': "required" } ) submit = SubmitField( label='提交', render_kw={ 'class': "btn btn-primary" } ) def validate_old_pwd(self, field): """检查验证旧密码是否正确""" from flask import session old_pwd = field.data login_name = session['login_admin'] admin = Admin.query.filter_by(name=login_name).first() if not admin.check_pwd(old_pwd): raise ValidationError('旧密码错误!') ``` #### 修改pwd密码更新视图 ```python @admin.route("/pwd/", methods=['GET', 'POST']) @admin_login_require def pwd(): form = PwdForm() if form.validate_on_submit(): data = form.data login_name = session['login_admin'] admin = Admin.query.filter_by(name=login_name).first() from werkzeug.security import generate_password_hash admin.pwd = generate_password_hash(data['new_pwd']) db.session.commit() # 提交新密码保存,然后跳转到登录界面 flash('密码修改成功,请重新登录!', category='ok') return redirect(url_for('admin.logout')) return render_template('admin/pwd.html', form=form) ``` #### 修改pwd.html密码更新表单 ```html <form role="form" method="post"> <div class="box-body"> <div class="form-group"> <label for="input_pwd">{{ form.old_pwd.label }}</label> {{ form.old_pwd }} {% for err in form.old_pwd.errors %} <div class="col-md-12" style="color: red">{{ err }}</div> {% endfor %} </div> <div class="form-group"> <label for="input_newpwd">{{ form.new_pwd.label }}</label> {{ form.new_pwd }} {% for err in form.new_pwd.errors %} <div class="col-md-12" style="color: red">{{ err }}</div> {% endfor %} </div> </div> {{ form.csrf_token }} <div class="box-footer"> {{ form.submit }} </div> </form> ``` ![BLOG_20181111_202605_10](/media/blog/images/2018/11/BLOG_20181111_202605_10.png "博客图集BLOG_20181111_202605_10.png") #### 修改login.html密码修改登录提示 增加`flash`的提示 ```html {% include 'admin/alert_info.html' %} ``` ![BLOG_20181111_202612_50](/media/blog/images/2018/11/BLOG_20181111_202612_50.png "博客图集BLOG_20181111_202612_50.png") ### 后台页面显示登录用户 修改base.html增加显示登录名,两种方式都可使用 ```html <span class="hidden-xs">{{ session.login_admin }}</span> <p> {{ session['login_admin'] }} <small>2018-08-08</small> </p> <p>用户{{ session.login_admin }}</p> ``` ![BLOG_20181111_202630_48](/media/blog/images/2018/11/BLOG_20181111_202630_48.png "博客图集BLOG_20181111_202630_48.png") ## 处理表单下拉列表与数据库不同步问题 当增加标签后,如果不重启服务器,则标签选项不会变化 ![BLOG_20181111_202639_34](/media/blog/images/2018/11/BLOG_20181111_202639_34.png "博客图集BLOG_20181111_202639_34.png") ```python class MovieForm(FlaskForm): tag_id = SelectField( label='标签', validators=[ DataRequired('请选择标签!') ], coerce=int, # choices=[(tag.id, tag.name) for tag in Tag.query.all()], description='标签', render_kw={ 'class': "form-control" } ) def __init__(self, *args, **kwargs): super(MovieForm, self).__init__(*args, **kwargs) self.tag_id.choices = [(v.id, v.name) for v in Tag.query.all()] ```
很赞哦! (1)
相关文章
文章交流
- emoji
当前用户
未登录,点击 登录专题目录
- 【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部署网站