flask(五)優化登入-對錶單進行過濾驗證
阿新 • • 發佈:2022-01-18
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)