一、安裝
pip install flask-wtf
二、創建一個flask的項目引入相對應的包
from flask_wtf import FlaskForm from wtforms import SelectField,TextAreaField,StringField, PasswordField, SubmitField,FileField,SelectMultipleField #驗證方式 from wtforms.validators import DataRequired, ValidationError,EqualTo
三、常用表單
class LoginForm(FlaskForm): '''管理員登陸表單''' account = StringField( label="賬號", validators=[ DataRequired("請輸入賬號!") ], description="賬號", render_kw={ "class": "form-control", "placeholder": "請輸入賬號!" # "required": "required" # 前端加入判別 } ) #密碼 pwd = PasswordField( label="密碼", validators=[ DataRequired("請輸入密碼!") ], description="密碼", render_kw={ "class": "form-control", "placeholder": "請輸入密碼!" # "required": "required" } ) #驗證舊密碼 def validate_old_pwd(self,field): from flask import session pwd=field.data name=session["admin"] admin=Admin.query.filter_by( name=name ).first() if not admin.check_pwd(pwd): raise ValidationError("舊密碼錯誤!") #兩次密碼驗證 repwd = PasswordField( label="管理員重復密碼", validators=[ DataRequired("請輸入管理員重復密碼!"), EqualTo('pwd',message="密碼不一致!") ], description="管理員重復密碼", render_kw={ "class": "form-control", "placeholder": "請輸入管理員重復密碼!" } ) #文件上傳 url=FileField( label="文件", validators=[ DataRequired("請上傳文件!") ], description="文件", ) #文本框 info = TextAreaField( label="簡介", validators=[ DataRequired("請輸入簡介!") ], description="簡介", render_kw={ "class":"form-control", "rows":10 } ) #選擇框 star=SelectField( label="星級", validators=[ DataRequired("請選擇星級!") ], coerce=int, choices=[(1,"1星"),(2,"2星"),(3,"3星"),(4,"4星"),(5,"5星")], description="星級", render_kw={ "class": "form-control", } ) submit = SubmitField( '登陸', render_kw={ "class": "btn btn-primary btn-block btn-flat", } ) def validate_account(self, field): account = field.data admin =Admin.query.filter_by(name=account).count() if admin == 0: raise ValidationError("賬號不存在")
四、引用表單
from app.admin.forms import PwdForm @admin.route("/pwd/", methods=["GET", "POST"]) def pwd(): #生成表單對象,傳入模板 form = PwdForm() if form.validate_on_submit(): #用戶返回信息 data = form.data return render_template("admin/pwd.html", form=form)