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)

 


免責聲明!

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



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