微电影之密码修改、上下文处理器
一、密码修改
1、form表单
class PwdForm(FlaskForm): old_pwd=PasswordField( label="旧密码", validators=[ DataRequired("请输入旧密码!") ], description="旧密码", render_kw={ "class":"form-control", "palaceholder":"请输入旧密码!" } ) new_pwd=PasswordField( label="新密码", validators=[ DataRequired("请输入新密码!") ], description="新密码", render_kw={ "class":"form-control", "palaceholder":"请输入新密码!" }) submit = SubmitField( '提交', render_kw={ "class": "btn-primary", }) #验证旧密码 def validate_old_pwd(self,field): from flask import session pwd=field.data name=session["admin"] admin=Admin.query.filter_by( name=name ).first() if not admin.check_pwd(pwd): raise ValidationError("旧密码错误!")
2、views视图
def pwd(): form=PwdForm() if form.validate_on_submit(): data=form.data admin=Admin.query.filter_by(name=session["admin"]).first() #加密密码 from werkzeug.security import generate_password_hash admin.pwd=generate_password_hash(data["new_pwd"]) db.session.add(admin) db.session.commit() flash("修改密码成功!","ok") #跳出到登录页 redirect(url_for('admin.logout')) return render_template("admin/pwd.html",form=form)
二、上下文处理器
作用:封装全局变量,展现在模板里面
views视图
@admin.context_processor def tpl_extra(): data = dict( online_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 转化为看得懂的格式 ) return data
html模板调用
<small>{{ online_time }}</small>
小技巧:
模板里获取当前用户名
{{ session['admin'] }}