1. 程式人生 > 其它 >flask(五)優化登入-對錶單進行過濾驗證

flask(五)優化登入-對錶單進行過濾驗證

admin/forms.py檔案新增程式碼:

from wtforms import Form, StringField
from wtforms.validators import InputRequired, Length

class LoginForm(Form):
    username = StringField(
        label='使用者名稱',
        validators=[
            InputRequired('使用者名稱為必填項'),
            Length(4,20,'使用者名稱長度為4到20')
        ]
    )
    password = StringField(
        label='密碼',
        validators=[
            InputRequired('密碼為必填項'),
            Length(6,9,'密碼長度為6到9')
        ]
    )

修改admin/views.py中login方法:

def login():
    error = None
    if request.method == 'GET':
        return render_template('admin/login.html')
    else:
        form=LoginForm(request.form)
        if form.validate():
            user = request.form.get('username')
            pwd = request.form.get('password')
            users = Users.query.filter_by(username=user).first()
            if users:
                if user == users.username and users.chek_password(pwd):
                    session['user_id'] = users.uid  # 使用者id存於session
                    return redirect(url_for('admin.index'))
                else:
                    error = "使用者名稱或密碼錯誤"
                    return render_template('admin/login.html',message=error)
            else:
                return render_template('admin/login.html',message="別試了,沒有此使用者!")
        return render_template('admin/login.html', message=form.errors)