微电影之密码修改、上下文处理器

一、密码修改

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'] }}

 

posted @ 2018-08-02 10:26  人生是一场修行  阅读(218)  评论(0编辑  收藏  举报