網站首頁 編程語言 正文
Flask高級_WTForms介紹和基本使用
一.介紹
Flask-WTF是簡化了WTForms操作的一個第三方庫。WTForms表單 的兩個主要功能是驗證用戶提交數據的合法性以及渲染模板。而 Flask-WTF還包括一些其他的功能:CSRF保護,文件上傳等。
這個插件庫主要有兩個作用:
第一個是做表單驗證,將用戶提交上來的數據進行驗證是否符合系 統要求。
第二個是做模版渲染。 (了解即可)
使用步驟:
-
自定義一個表單類,繼承自wtforms.Form類。
-
定義好需要驗證的字段,字段的名字必須和模版中那些需要驗證的input標簽的name屬性值保持一 致。
-
在需要驗證的字段上,需要指定好具體的數據類型。
-
在相關的字段上,指定驗證器。
-
以后在視圖函數中,只需要使用這個表單類的對象,并且把需要驗證的數據,也就是request.form 傳給這個表單類,再調用表單類對象.validate()方法進行,如果返回True,那么代表用戶輸入的數 據都是符合格式要求的,Flase則代表用戶輸入的數據是有問題的。如果驗證失敗了,那么可以通 過表單類對象.errors來獲取具體的錯誤信息。
二.實例
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>注冊頁面</title>
</head>
<body>
<form action="/register/" method="post">
<table>
<tr>
<th>用戶名:</th>
<td><input type="text"name="uname"></td>
</tr>
<tr>
<th>密碼:</th>
<td><input type="password"name="pwd"></td>
</tr>
<tr>
<th>確認密碼:</th>
<td><input type="password"name="pwd2"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"value="注冊"></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='用戶名的字符數量在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 '驗證成功?。?!'
return f'驗證失?。。?!失敗信息:{form.errors}'
if __name__ == '__main__':
app.run(debug=True)
注:
如果覺得筆記有些問題,麻煩在百忙之中在評論中指正,或提出建議!另外,如果覺得這份筆記對你有所幫助,麻煩動動發財的小手手點一波贊!
原文鏈接:https://blog.csdn.net/qq_55961861/article/details/126593398
相關推薦
- 2022-09-25 CSS-解決因子元素浮動引起的父元素高度塌陷問題
- 2023-07-03 Redis 中 List(列表)類型的命令及詳解
- 2022-08-25 .net?core中高效的動態內存管理方案_實用技巧
- 2022-05-04 分享3個非常實用的?Python?模塊_python
- 2022-11-25 k8s?中的?service?如何找到綁定的?Pod?及實現?Pod?負載均衡的方法_云其它
- 2022-11-07 使用react-native-doc-viewer實現文檔預覽_React
- 2022-10-14 TorchServe部署yolov5項目(Docker篇)
- 2022-07-13 SpringCloud之http客戶端Feign
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支