您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)什么是Flask第三方庫WTForms,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
Web應(yīng)用程序的一個(gè)重要方面是為用戶提供一個(gè)用戶界面。 HTML提供了一個(gè)<form>標(biāo)簽,用于設(shè)計(jì)一個(gè)接口。 可以適當(dāng)使用表單的元素,如文本輸入,廣播,選擇等。通過GET或POST方法將用戶輸入的數(shù)據(jù)以Http請(qǐng)求消息的形式提交給服務(wù)器端腳本。
服務(wù)器端腳本必須從http請(qǐng)求數(shù)據(jù)重新創(chuàng)建表單元素。 所以實(shí)際上,表單元素必須被定義兩次 - 一次是HTML,一次是服務(wù)器端腳本。使用HTML表單的另一個(gè)缺點(diǎn)是很難(如果不是不可能)動(dòng)態(tài)地呈現(xiàn)表單元素。 HTML本身無法驗(yàn)證用戶的輸入。
這就是WTForms,一個(gè)靈活的表單,渲染和驗(yàn)證庫來得方便的地方。 Flask-WTF擴(kuò)展為這個(gè)WTForms庫提供了一個(gè)簡單的接口。
使用Flask-WTF,可以在Python腳本中定義表單域并使用HTML模板來呈現(xiàn)它們。 也可以將驗(yàn)證應(yīng)用于WTF字段。
Flask-WTF是簡化了WTForms操作的一個(gè)第三方庫。WTForms表單的兩個(gè)主要功能是驗(yàn)證用戶提交數(shù)據(jù)的合法性以及渲染模板。還有其它一些功能:CSRF保護(hù),文件上傳等。
安裝方法:
pip install flask-wtf
已安裝的軟件包包含一個(gè)Form類,該類必須用作用戶定義表單的父級(jí)。WTforms包包含各種表單域的定義。
下面列出了一些標(biāo)準(zhǔn)表單字段:
1.WTForms簡單驗(yàn)證
from flask import Flask,request,render_template from wtforms import Form,StringField from wtforms.validators import Length,EqualTo app = Flask(__name__) class RegistForm(Form): username = StringField(validators=[Length(min=3,max=10,message='用戶名必須在3到10位之間')]) password = StringField(validators=[Length(min=6,max=10,message='密碼必須6到10位之間')]) password_repeat = StringField(validators=[Length(min=6,max=10), EqualTo("password",message='密碼不一致')]) @app.route('/') def hello_world(): return 'Hello World!' @app.route('/regist/',methods=['GET','POST']) def regist(): if request.method == 'GET': return render_template('regist.html') else: form = RegistForm(request.form) if form.validate(): return 'success' else: print(form.errors) return 'fail' if __name__ == '__main__': app.run()
2.WTForms常用驗(yàn)證器和自定義驗(yàn)證器
常用的驗(yàn)證器:
(1)Email:驗(yàn)證上傳的數(shù)據(jù)是否為郵箱格式
(2)EqualTo:兩個(gè)字段是否相等(密碼和重復(fù)密碼)
(3)InputRequired:原始數(shù)據(jù)的需要驗(yàn)證
(4)Length:長度限制,有mix和max兩個(gè)值
(5)NumberRange:數(shù)字的區(qū)間,有mix和max兩個(gè)值,如果在兩個(gè)值之間則滿足
(6)Regexp:自定義正則表達(dá)式
(7)URL:必須url格式
(8)UUID:uuid格式
from wtforms import Form,StringField,IntegerField from wtforms.validators import Length,EqualTo,Email,InputRequired,NumberRange from wtforms.validators import Regexp,URL,ValidationError class LoginForm(Form): email = StringField(validators=[Email(message='郵箱格式不正確')]) username = StringField(validators=[InputRequired(message='這個(gè)字段必須要填')]) age = IntegerField(validators=[NumberRange(min=18,max=100)]) phone = StringField(validators=[Regexp(r'1[38745]\d{9}')]) homepage = StringField(validators=[URL()]) captcha = StringField(validators=[Length(4,4)]) # 自定義驗(yàn)證器 def validate_captcha(self,field): if field.data != '1234': #field.data:用戶提交過來的數(shù)據(jù) raise ValidationError('驗(yàn)證碼錯(cuò)誤') #如果驗(yàn)證失敗,就拋出驗(yàn)證失敗的異常
3.使用wtforms渲染模板
forms.py
class SettingsForm(Form): username = StringField(label="用戶名:",validators=[InputRequired(message='這個(gè)字段必須要填')]) age = IntegerField('年齡:',validators=[NumberRange(min=18, max=100)]) remeber = BooleanField('記住我') tags = SelectField('標(biāo)簽',choices=[(1,'python'),(2,'django')])
flask_wtforms_demo.py
@app.route('/settings/',methods=['GET','POST']) def settings(): if request.method == 'GET': form = SettingsForm() return render_template('settings.html',form=form) else: pass
settings.html
<form action="" method="post"> {# 括號(hào)里面可以添加樣式#} <p>{{ form.username.label }} {{ form.username(class="") }}</p> <p>{{ form.age.label }} {{ form.age() }}</p> <p>{{ form.remeber.label }} {{ form.remeber() }}</p> <p>{{ form.tags.label }} {{ form.tags() }}</p> <p><input type="submit" value="提交"></p> </form>
看完上述內(nèi)容,你們對(duì)什么是Flask第三方庫WTForms有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。