WTForms經常使用的驗證器

 

from wtforms import Form,StringField,IntegerField
from wtforms import validators
from wtforms.validators import Length,EqualTo,Email,InputRequired,NumberRange,\
    Regexp,URL,UUID


class RegisterForm(Form):
    username = StringField(validators=[Length(max=10,min=3,message='用戶名長度不正確')])
    password = StringField(validators=[Length(max=10,min=3,message='密碼長度不正確')])
    password_repeat = StringField(validators=[Length(max=10,min=3,message='密碼長度不正確'),EqualTo('password')])


class LoginForm(Form):
    # email = StringField(validators=[Email(message='郵箱格式不正確')])
    # username = StringField(validators=[InputRequired(message='必須填寫用戶名')])#inputrequired必填字段
    # age = IntegerField(validators=[NumberRange(12,100)])#驗證數字在某某區間以內
    # phone = StringField(validators=[Regexp(r'1[85347]\d{9}',message='手機號碼格式不正確')])
    # home_page = StringField(validators=[URL()])#必須驗證必須是一個跳轉連接
    uuid = StringField(validators=[UUID()])#驗證uuid的
from flask import Flask,request,render_template
from forms import RegisterForm,LoginForm


app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


@app.route('/register/',methods=['get','post'])
def register():
    if request.method == 'GET':
        return render_template('register.html')
    else:
        # username = request.form.get('username')
        # password = request.form.get('password')
        # password_repeat = request.form.get('password_repeat')
        # if 3 > len(username) or len(username)> 10:
        #     return '用戶名長度不正確'
        # if 3 > len(password) or len(password)> 10:
        #     return '密碼長度不正確'
        # if password != password_repeat:
        #     return '密碼輸入不一致'
        form = RegisterForm(request.form)
        if form.validate():
            return 'success'
        else:
            print(form.errors)#{'username': ['用戶名長度不正確'],
            # 'password': ['密碼長度不正確'], 'password_repeat': ['密碼長度不正確']}
            #由於是字典,獲取方式我就不寫了
            return 'fail'


@app.route('/login/',methods=['get','post'])#若是methods沒有post方法,會報狀態碼405錯誤,
# 靜態文件不容許請求post方法
def login():
    if request.method == "GET":
        return render_template('login.html')
    else:
        login_form = LoginForm(request.form)
        if login_form.validate():
            return 'success'
        else:
            return '{errors}'.format(errors=login_form.errors.get('phone')[0])#獲取具體錯誤信息

if __name__ == '__main__':
    app.run(debug=True)
相關文章
相關標籤/搜索