目錄
安裝: pip install flask-wtf
-
創建表單
from flask_wtf import FlaskForm # 表單基類 from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, Length, EqualTo, Email app = Flask(__name__) app.config['SECRET_KEY'] = 'SECRET_KEY' maanger = Manager(app) # 表單註冊類 class Register(FlaskForm): username = StringField('⽤戶名', validators=[DataRequired('請輸名'), Length(min=6, max=12, message='名範圍在6~12位之間')]) userpass = PasswordField('密碼', validators=[DataRequired('請輸密碼'), Length(min=6, max=12, message='密碼範圍在6~12位之間')]) confirm = PasswordField('確認密碼', validators=[DataRequired('確認密碼'), EqualTo('userpass', message='密碼和確認密碼不一致')]) email = StringField('郵箱', validators=[DataRequired('請輸郵箱地址'), Email(message='請輸正確的郵箱')]) submit = SubmitField('註冊')
-
添加視圖函數
# 註冊 @app.route('/register/', methods=['GET', 'POST']) def register(): form = Register() # 實例化表單類 # 這個⽅法是實現表單校驗功能的 csrf,數據正確性 都通過了 則爲真 否則爲假 if form.validate_on_submit(): # print(request.form) print(form.username) # 拿到username的整個標籤 print(form.username.data) # 取出username⾥⾯的value值 return '數據提交過來了' return render_template('register.html', form=form)
-
渲染表單
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>flask-wtf的表單類</h2> <form action="{{ url_for('register') }}" method="post"> {# csrf #} {{ form.csrf_token }} {{ form.username.label }} {{ form.username(style="color:red;",class='myself',placeholder='請輸 ⼊⽤戶名...') }} #給當前的標籤添加屬性和值 關鍵字參數 #循環迭代取出驗證失敗的錯誤信息(也就是你在驗證器⾥的屬性message的 值) {% for error in form.username.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.userpass.label }} {{ form.userpass }} {% for error in form.userpass.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.confirm.label }} {{ form.confirm() }} {% for error in form.confirm.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.email.label }} {{ form.email() }} {% for error in form.email.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.submit() }} </form> </body> </html>
-
字段類型
-
驗證器