日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:三分鐘看懂Flask第三方庫(kù)WTForms

Web應(yīng)用程序的一個(gè)重要方面是為用戶提供一個(gè)用戶界面。 HTML提供了一個(gè)

標(biāo)簽,用于設(shè)計(jì)一個(gè)接口。 可以適當(dāng)使用表單的元素,如文本輸入,廣播,選擇等。通過(guò)GET或POST方法將用戶輸入的數(shù)據(jù)以Http請(qǐng)求消息的形式提交給服務(wù)器端腳本。

在含山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),含山網(wǎng)站建設(shè)費(fèi)用合理。

服務(wù)器端腳本必須從http請(qǐng)求數(shù)據(jù)重新創(chuàng)建表單元素。 所以實(shí)際上,表單元素必須被定義兩次 - 一次是HTML,一次是服務(wù)器端腳本。使用HTML表單的另一個(gè)缺點(diǎn)是很難(如果不是不可能)動(dòng)態(tài)地呈現(xiàn)表單元素。 HTML本身無(wú)法驗(yàn)證用戶的輸入。

這就是WTForms,一個(gè)靈活的表單,渲染和驗(yàn)證庫(kù)來(lái)得方便的地方。 Flask-WTF擴(kuò)展為這個(gè)WTForms庫(kù)提供了一個(gè)簡(jiǎn)單的接口。

使用Flask-WTF,可以在Python腳本中定義表單域并使用HTML模板來(lái)呈現(xiàn)它們。 也可以將驗(yàn)證應(yīng)用于WTF字段。

Flask-WTF是簡(jiǎn)化了WTForms操作的一個(gè)第三方庫(kù)。WTForms表單的兩個(gè)主要功能是驗(yàn)證用戶提交數(shù)據(jù)的合法性以及渲染模板。還有其它一些功能:CSRF保護(hù),文件上傳等。

安裝方法:

pip install flask-wtf

已安裝的軟件包包含一個(gè)Form類,該類必須用作用戶定義表單的父級(jí)。WTforms包包含各種表單域的定義。

下面列出了一些標(biāo)準(zhǔn)表單字段:

1.WTForms簡(jiǎn)單驗(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:長(zhǎng)度限制,有mix和max兩個(gè)值

(5)NumberRange:數(shù)字的區(qū)間,有mix和max兩個(gè)值,如果在兩個(gè)值之間則滿足

(6)Regexp:自定義正則表達(dá)式

(7)URL:必須url格式

(8)UUID:uuid格式

相關(guān)推薦:《Python視頻教程》

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:用戶提交過(guò)來(lái)的數(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


{#    括號(hào)里面可以添加樣式#}
    

{{ form.username.label }} {{ form.username(class="") }}

    

{{ form.age.label }} {{ form.age() }}

    

{{ form.remeber.label }} {{ form.remeber() }}

    

{{ form.tags.label }} {{ form.tags() }}

    

相關(guān)推薦:

Flask中的Cookie和Session是什么


文章名稱:創(chuàng)新互聯(lián)Python教程:三分鐘看懂Flask第三方庫(kù)WTForms
當(dāng)前鏈接:http://m.5511xx.com/article/cocoich.html