五十三:WTForms表單驗證之常用驗證器


 

Email:驗證數據是否為郵箱
EqualTo:驗證此字段的數據是否和另一個字段的值相等,常用與校驗密碼和確認密碼
InputRequired:檢驗數據必傳
Length:校驗數據長度
NumberRange:檢驗數據需在指定數字的區間
Regexp:自定義正則表達式(如手機號碼)
URL:必須是url的形式
UUID:必須是UUID

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注冊</title>
</head>
<body>
<form action="#" method="post">
<table>
<tbody>
<tr>
<td>用戶名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>郵箱:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>年齡:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td>手機號:</td>
<td><input type="text" name="phone"></td>
</tr>
<tr>
<td>個人主頁:</td>
<td><input type="text" name="home_page"></td>
</tr>
<tr>
<td>uuid:</td>
<td><input type="text" name="uuid"></td>
</tr>
<tr>
<td>密碼:</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td>確認密碼:</td>
<td><input type="text" name="check_password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="點擊注冊"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

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


class RegistForm(Form):
""" 注冊參數驗證 """
# form表單中參數的name屬性值
username = StringField(validators=[Length(3, 10, message='用戶名長度為3~10位')])
email = StringField(validators=[Email(message='非郵箱格式')])
password = StringField(validators=[InputRequired(message='密碼必傳'), Length(6, 10, message='密碼長度為6~10位')])
check_password = StringField(validators=[Length(6, 10, message='密碼長度為6~10位'), EqualTo('password', message='兩次密碼不一致')])
age = IntegerField(validators=[NumberRange(18, 50, message='年齡需為18~50歲')])
phone = StringField(validators=[Regexp(r'1[34578]\d{9}', message='手機號格式錯誤')])
home_page = StringField(validators=[URL(message='home_page必須為url格式')])
uuid = StringField(validators=[UUID(message='uuid格式錯誤')])

from flask import Flask, request, render_template

from forms import RegistForm

app = Flask(__name__)


@app.route('/regist/', methods=['GET', 'POST'])
def regist():
form = RegistForm(request.form)
if request.method == 'POST':
if form.validate():
return '驗證通過'
else:
print(form.errors)
return form.errors
return render_template('regist.html')


if __name__ == '__main__':
app.run(debug=True)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM