網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Flask高級(jí)_WTForms介紹和基本使用
一.介紹
Flask-WTF是簡(jiǎn)化了WTForms操作的一個(gè)第三方庫(kù)。WTForms表單 的兩個(gè)主要功能是驗(yàn)證用戶(hù)提交數(shù)據(jù)的合法性以及渲染模板。而 Flask-WTF還包括一些其他的功能:CSRF保護(hù),文件上傳等。
這個(gè)插件庫(kù)主要有兩個(gè)作用:
第一個(gè)是做表單驗(yàn)證,將用戶(hù)提交上來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)證是否符合系 統(tǒng)要求。
第二個(gè)是做模版渲染。 (了解即可)
使用步驟:
-
自定義一個(gè)表單類(lèi),繼承自wtforms.Form類(lèi)。
-
定義好需要驗(yàn)證的字段,字段的名字必須和模版中那些需要驗(yàn)證的input標(biāo)簽的name屬性值保持一 致。
-
在需要驗(yàn)證的字段上,需要指定好具體的數(shù)據(jù)類(lèi)型。
-
在相關(guān)的字段上,指定驗(yàn)證器。
-
以后在視圖函數(shù)中,只需要使用這個(gè)表單類(lèi)的對(duì)象,并且把需要驗(yàn)證的數(shù)據(jù),也就是request.form 傳給這個(gè)表單類(lèi),再調(diào)用表單類(lèi)對(duì)象.validate()方法進(jìn)行,如果返回True,那么代表用戶(hù)輸入的數(shù) 據(jù)都是符合格式要求的,F(xiàn)lase則代表用戶(hù)輸入的數(shù)據(jù)是有問(wèn)題的。如果驗(yàn)證失敗了,那么可以通 過(guò)表單類(lèi)對(duì)象.errors來(lái)獲取具體的錯(cuò)誤信息。
二.實(shí)例
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>注冊(cè)頁(yè)面</title>
</head>
<body>
<form action="/register/" method="post">
<table>
<tr>
<th>用戶(hù)名:</th>
<td><input type="text"name="uname"></td>
</tr>
<tr>
<th>密碼:</th>
<td><input type="password"name="pwd"></td>
</tr>
<tr>
<th>確認(rèn)密碼:</th>
<td><input type="password"name="pwd2"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"value="注冊(cè)"></td>
</tr>
</table>
</form>
</body>
</html>
py文件:
#coding=utf-8
from flask import Flask,request,render_template
from wtforms import Form,StringField
from wtforms.validators import Length,EqualTo
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello~'
class registerForm(Form):
uname = StringField(validators=[Length(min=2,max=9,message='用戶(hù)名的字符數(shù)量在1-9之間')])
pwd = StringField(validators=[Length(min=2,max=9)])
pwd2 = StringField(validators=[Length(min=2,max=9),EqualTo('pwd',message='兩次輸入的密碼不一致!!!')])
@app.route('/register/',methods=['GET','POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
else:
form = registerForm(request.form)
if form.validate():
return '驗(yàn)證成功!!!'
return f'驗(yàn)證失敗!!!失敗信息:{form.errors}'
if __name__ == '__main__':
app.run(debug=True)
注:
如果覺(jué)得筆記有些問(wèn)題,麻煩在百忙之中在評(píng)論中指正,或提出建議!另外,如果覺(jué)得這份筆記對(duì)你有所幫助,麻煩動(dòng)動(dòng)發(fā)財(cái)?shù)男∈质贮c(diǎn)一波贊!
原文鏈接:https://blog.csdn.net/qq_55961861/article/details/126593398
相關(guān)推薦
- 2022-05-31 Android接入ffmpeg庫(kù)及問(wèn)題解決方法_Android
- 2023-02-17 linux?命令中的大于號(hào)、小于號(hào)的作用及代表的意思_linux shell
- 2022-12-29 Python?Base64編碼和解碼操作_python
- 2022-06-04 C語(yǔ)言超詳細(xì)講解輪轉(zhuǎn)數(shù)組_C 語(yǔ)言
- 2022-04-02 Python+Tkinter繪制一個(gè)數(shù)字時(shí)鐘_python
- 2022-09-18 go?mock?server的簡(jiǎn)易實(shí)現(xiàn)示例_Golang
- 2022-10-02 詳解R語(yǔ)言caret包trainControl函數(shù)_R語(yǔ)言
- 2022-10-05 Ubuntu?Server?20.04?LTS?環(huán)境下搭建vim?編輯器Python?IDE的詳細(xì)步
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支