flask之表单验证flask-wtf

一、安装

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)

 

posted @ 2018-07-30 18:09  人生是一场修行  阅读(1486)  评论(0编辑  收藏  举报