Web框架——Flask系列之WTF表单验证练习(七)
生活随笔
收集整理的這篇文章主要介紹了
Web框架——Flask系列之WTF表单验证练习(七)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Web表單
web表單是web應用程序的基本功能。
它是HTML頁面中負責數據采集的部件。表單有三個部分組成:表單標簽、表單域、表單按鈕。表單允許用戶輸入數據,負責HTML頁面數據采集,通過表單將用戶輸入的數據提交給服務器。
在Flask中,為了處理web表單,我們一般使用Flask-WTF擴展,它封裝了WTForms,并且它有驗證表單數據的功能。
WTForms支持的HTML標準字段:
WTForms常用驗證函數:
注意:使用Flask-WTF需要配置參數SECRET_KEY。
例如: app.config[‘SECRET_KEY’] = ‘silents is gold’
CSRF_ENABLED是為了CSRF(跨站請求偽造)保護。 SECRET_KEY用來生成加密令牌,當CSRF激活的時候,該設置會根據設置的密匙生成加密令牌。
在HTML頁面中直接寫form表單:
#模板文件 <form method='post'><input type="text" name="username" placeholder='Username'><input type="password" name="password" placeholder='password'><input type="submit"> </form>視圖函數中獲取表單數據:
from flask import Flask,render_template,request@app.route('/login',methods=['GET','POST']) def login():if request.method == 'POST':username = request.form['username']password = request.form['password']print username,passwordreturn render_template('login.html',method=request.method)使用Flask-WTF實現表單:
- myCode
01_wtf.py文件:
register.html文件:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><form method="post">{{form.csrf_token}}{{form.user_name.label}}<p>{{form.user_name}}</p>{% for msg in form.user_name.errors %}<p>{{msg}}</p>{% endfor %}{{form.password.label}}<p>{{form.password}}</p>{% for msg in form.password.errors %}<p>{{msg}}</p>{% endfor %}{{form.password2.label}}<p>{{form.password2}}</p>{% for msg in form.password2.errors %}<p>{{msg}}</p>{% endfor %}{{form.submit}}</form> </body> </html>二、效果圖及目錄結構
三、模板代碼
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><form method="post">{# 設置csrf_token #}{{ form.csrf_token() }}{{ form.username.label }}{{ form.username }}<br>{{ form.password.label }}{{ form.password }}<br>{{ form.password2.label }}{{ form.password2 }}<br>{{ form.submit }}<br></form> <!-- 使用遍歷獲取閃現的消息 get_flashed_messages()函數-->{% for message in get_flashed_messages() %}{{message}}{% endfor %} </body> </html>四、python代碼
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 sys # reload(sys) # sys.setdefaultencoding('utf-8')''' 使用WTF實現表單 自定義一個表單類 ''' app = Flask(__name__)app.secret_key = 'Zep03'# 自定義一個類,繼承自FlaskForm class LoginForm(FlaskForm):username = StringField(u'用戶名',validators=[DataRequired()])password = PasswordField(u'密碼',validators=[DataRequired()])password2 = PasswordField(u'確認密碼',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')print(username)# 3. 驗證參數 判斷參數是否填寫 以及 密碼是否相同# wtf 可以使用一句代碼就實現所有的校驗# 當表單提交時觸發validate_on_submit()函數if login_form.validate_on_submit():print(username,password)return 'success!'else:flash(u'參數有誤')return render_template('forms2.html',form=login_form)@app.route('/',methods=['GET','POST']) def forms():# request是一個請求對象,可以獲取請求方式、數據# 1. 判斷請求方式if request.method == 'POST':# 2. 獲取請求參數username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')print(username)# 3. 判斷參數是否填寫 以及 密碼是否相同if not all([username, password, password2]):# print('參數不完整')flash(u'參數不完整')elif password2 != password:# print('密碼不一致')flash(u'密碼不一致')else:return 'success'return render_template('forms.html')if __name__ == '__main__':app.run(debug=True)總結
以上是生活随笔為你收集整理的Web框架——Flask系列之WTF表单验证练习(七)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python自动化办公——xlrd、xl
- 下一篇: 一、快速开始一个 MyBatis项目(详