Flask之模板web表單

來源:互聯網
上載者:User

標籤:.data   oat   run   render   允許   str   ber   複選框   啟用   

3.3 Web表單:

web表單是web應用程式的準系統。

它是HTML頁面中負責資料擷取的組件。表單有三個部分組成:表單標籤、表單域、表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料擷取,通過表單將使用者輸入的資料提交給伺服器。

在Flask中,為了處理web表單,我們一般使用Flask-WTF擴充,它封裝了WTForms,並且它有驗證表單資料的功能。

WTForms支援的HTML標準欄位
欄位對象 說明
StringField 文字欄位
TextAreaField 多行文字欄位
PasswordField 密碼文字欄位
HiddenField 隱藏文字欄位
DateField 文字欄位,值為datetime.date格式
DateTimeField 文字欄位,值為datetime.datetime格式
IntegerField 文字欄位,值為整數
DecimalField 文字欄位,值為decimal.Decimal
FloatField 文字欄位,值為浮點數
BooleanField 複選框,值為True和False
RadioField 一組單選框
SelectField 下拉式清單
SelectMultipleField 下拉式清單,可選擇多個值
FileField 文本上傳欄位
SubmitField 表單提交按鈕
FormField 把表單作為欄位嵌入另一個表單
FieldList 一組指定類型的欄位
WTForms常用驗證函式
驗證函式 說明
DataRequired 確保欄位中有資料
EqualTo 比較兩個欄位的值,常用於比較兩次密碼輸入
Length 驗證輸入的字串長度
NumberRange 驗證輸入的值在數字範圍內
URL 驗證URL
AnyOf 驗證輸入值在可選列表中
NoneOf 驗證輸入值不在可選列表中

使用Flask-WTF需要配置參數SECRET_KEY。

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,password    return render_template(‘login.html‘,method=request.method)

 

使用Flask-WTF實現表單。配置參數:
 app.config[‘SECRET_KEY‘] = ‘silents is gold‘

 

模板頁面:
 <form method="post">        #設定csrf_token        {{ form.csrf_token() }}        {{ form.us.label }}        <p>{{ form.us }}</p>        {{ form.ps.label }}        <p>{{ form.ps }}</p>        {{ form.ps2.label }}        <p>{{ form.ps2 }}</p>        <p>{{ form.submit() }}</p>        {% for x in get_flashed_messages() %}            {{ x }}        {% endfor %} </form>

 

視圖函數:
#coding=utf-8from flask import Flask,render_template,    redirect,url_for,session,request,flash#匯入wtf擴充的表單類from flask_wtf import FlaskForm#匯入自訂表格單需要的欄位from wtforms import SubmitField,StringField,PasswordField#匯入wtf擴充提供的表單驗證器from wtforms.validators import DataRequired,EqualToapp = Flask(__name__)app.config[‘SECRET_KEY‘]=‘1‘#自訂表格單類,文字欄位、密碼欄位、提交按鈕class Login(Form):    us = StringField(label=u‘使用者:‘,validators=[DataRequired()])    ps = PasswordField(label=u‘密碼‘,validators=[DataRequired(),EqualTo(‘ps2‘,‘err‘)])    ps2 = PasswordField(label=u‘確認密碼‘,validators=[DataRequired()])    submit = SubmitField(u‘提交‘)@app.route(‘/login‘)def login():    return render_template(‘login.html‘)#定義根路由視圖函數,產生表單對象,擷取表單資料,進行表單資料驗證@app.route(‘/‘,methods=[‘GET‘,‘POST‘])def index():    form = Login()    if form.validate_on_submit():        name = form.us.data        pswd = form.ps.data        pswd2 = form.ps2.data        print name,pswd,pswd2        return redirect(url_for(‘login‘))    else:        if request.method==‘POST‘:            flash(u‘資訊有誤,請重新輸入!‘)        print form.validate_on_submit()    return render_template(‘index.html‘,form=form)if __name__ == ‘__main__‘:    app.run(debug=True)

 



Flask之模板web表單

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.