一、安装
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)