Flask-WTF之表單驗證

安裝Flask-WTF

pip install Flask-WTF

目錄結構

在這裏插入圖片描述

Flask_WTF.py

from flask import Flask,render_template,request,flash
#導入wtf擴展的表單類
from flask_wtf import FlaskForm
#導入自定義表單需要的字段
from wtforms import SubmitField,StringField,PasswordField
#導入wtf擴展提供的表單驗證器
from wtforms.validators import DataRequired,EqualTo

#解決編碼問題
import importlib,sys
importlib.reload(sys)

app = Flask(__name__)
app.secret_key = 'itheima'

#自定義表單類,文本字段,密碼字段,提交按鈕
class LoginForm(FlaskForm):
    username = StringField('用戶名:',validators=[DataRequired()])
    password = PasswordField('密碼:',validators=[DataRequired()])
    password2 = PasswordField('確認密碼:',validators=[DataRequired(),EqualTo('password','密碼填寫的不一致')])
    submit = SubmitField('提交')

#定義根路由試圖函數,生成表單對象,獲取表單數據,進行表單數據驗證
@app.route('/form',methods=['GET','POST'])
def login():
    login_form  = LoginForm()
    #1.判斷請求方式
    if request.method == 'POST':
        #2.獲取請求的參數
        username =request.form.get('username')
        password =request.form.get('password')
        password2 =request.form.get('password2')
        # 3.調用validation_on_submit方法,可以一次性執行完所有驗證函數的邏輯
        if login_form.validate_on_submit():
            return 'success'
        else:
            flash('參數有誤')
    return render_template("index.html",form = login_form)

if __name__ == '__main__':
    app.run(debug=True,port=5111)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post">
    {{ form.csrf_token() }}
    {{ form.username.label }}{{ form.username }}<br>
    {{ form.password.label }}{{ form.password }}<br>
    {{ form.password2.label }}{{ form.password2 }}<br>
    {{ form.submit }}
</form>
</body>
</html>

效果:

在這裏插入圖片描述

點擊提交按鈕:

在這裏插入圖片描述
WTForms包也包含驗證器類。它對錶單字段應用驗證很有用。以下列表顯示了常用的驗證器。

驗證器類 描述
DataRequireed 確保字段中有數據
EnqualTo 比較兩個字段的值,常用於比較兩次密碼輸入
Length 驗證輸入的字段長度
NumberRange 驗證輸入的值在數字範圍內
URL 驗證URL
AnyOf 驗證輸入值在可選列表中
NoneOf 驗證輸入值不在可選列表中

WTforms包中包含各種表單字段的定義。下面列出了一些標準表單字段

在這裏插入圖片描述

記一些錯誤:

1、解決python的編碼問題
python2的解決方法

import sys
reload(sys)
sys.setdefaultencoding(‘utf-8)

python3的解決方法

import importlib,sys
importlib.reload(sys)

2、安裝Flask-WTF遇到的問題:AttributeError: module ‘pip’ has no attribute ‘main’

降級pip的版本:
python -m pip install --user --upgrade pip==9.0

這是根據黑馬程序員的一門Flask課程記錄的筆記。
視頻地址:6節課入門Flask框架web開發視頻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章