欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask處理Web表單的實(shí)現(xiàn)方法

 更新時(shí)間:2021年01月31日 15:20:20   作者:流芳  
這篇文章主要介紹了Flask處理Web表單的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

web表單是web應(yīng)用程序的基本功能。

它是HTML頁(yè)面中負(fù)責(zé)數(shù)據(jù)采集的部件。表單有三個(gè)部分組成:表單標(biāo)簽、表單域、表單按鈕。表單允許用戶輸入數(shù)據(jù),負(fù)責(zé)HTML頁(yè)面數(shù)據(jù)采集,通過(guò)表單將用戶輸入的數(shù)據(jù)提交給服務(wù)器。

在Flask中,為了處理web表單,我們一般使用Flask-WTF擴(kuò)展,它封裝了WTForms,并且它有驗(yàn)證表單數(shù)據(jù)的功能。

WTForms支持的HTML標(biāo)準(zhǔn)字段

字段對(duì)象 說(shuō)明
字段對(duì)象 說(shuō)明
StringField 文本字段
TextAreaField 多行文本字段
PasswordField 密碼文本字段
HiddenField 隱藏文件字段
DateField 文本字段,值為 datetime.date 文本格式
DateTimeField 文本字段,值為 datetime.datetime 文本格式
IntegerField 文本字段,值為整數(shù)
DecimalField 文本字段,值為decimal.Decimal
FloatField 文本字段,值為浮點(diǎn)數(shù)
BooleanField 復(fù)選框,值為 True 和 False
RadioField 一組復(fù)選框
SelectField 下拉列表
SelectMutipleField 下拉列表可選擇多個(gè)值
FileField 文件上傳字段
SubmitField 表單提交按鈕
FormField 把表單作為字段嵌入另一個(gè)表單
FieldList 一組指定類型的字段

WTForms常用驗(yàn)證函數(shù)

驗(yàn)證函數(shù) 說(shuō)明
DateRequired 確保字段中有數(shù)據(jù)
EqualTo 比較兩個(gè)字段的值,常用于比較兩次密碼的輸入
Length 驗(yàn)證輸入的字符串長(zhǎng)度
NumberRange 驗(yàn)證輸入的值在數(shù)字范圍內(nèi)
URL 驗(yàn)證URL
AnyOf 驗(yàn)證輸入值在可選列表中
NoneOf 驗(yàn)證輸入值不在可選列表中

使用 Flask-WTF 需要配置參數(shù) SECRET_KEY

CSRF_ENABLED是為了CSRF(跨站請(qǐng)求偽造)保護(hù)。 SECRET_KEY用來(lái)生成加密令牌,當(dāng)CSRF激活的時(shí)候,該設(shè)置會(huì)根據(jù)設(shè)置的密匙生成加密令牌。在HTML頁(yè)面中直接寫form表單:

<form method='post'>
  <input type="text" name="username" placeholder='Username'>
  <input type="password" name="password" placeholder='password'>
  <input type="submit">
</form>

視圖函數(shù)中獲取表單數(shù)據(jù):

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)123456789

使用 Flask-WTF 實(shí)現(xiàn)表單

配置參數(shù)

app.config['SECRET_KEY'] = 'SECRET_KEY'1

模板頁(yè)面

<form method="post">
 #設(shè)置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>1234567891011121314
視圖函數(shù)
#coding=utf-8
from flask import Flask,render_template,\
  redirect,url_for,session,request,flash

#導(dǎo)入wtf擴(kuò)展的表單類
from flask_wtf import FlaskForm
#導(dǎo)入自定義表單需要的字段
from wtforms import SubmitField,StringField,PasswordField
#導(dǎo)入wtf擴(kuò)展提供的表單驗(yàn)證器
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
app.config['SECRET_KEY']='1'

#自定義表單類,文本字段、密碼字段、提交按鈕
class Login(FlaskForm):
  us = StringField(label=u'用戶名',validators=[DataRequired()])
  ps = PasswordField(label=u'密碼',validators=[DataRequired(),EqualTo('ps2','err')])
  ps2 = PasswordField(label=u'確認(rèn)密碼',validators=[DataRequired()])
  submit = SubmitField(u'提交')

@app.route('/login')
def login():
  return render_template('login.html')

#定義根路由視圖函數(shù),生成表單對(duì)象,獲取表單數(shù)據(jù),進(jìn)行表單數(shù)據(jù)驗(yàn)證
@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'信息有誤,請(qǐng)重新輸入!')
    print form.validate_on_submit()

  return render_template('index.html',form=form)
if __name__ == '__main__':
  app.run(debug=True)

到此這篇關(guān)于Flask處理Web表單的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Flask處理Web表單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • django模型中的字段和model名顯示為中文小技巧分享

    django模型中的字段和model名顯示為中文小技巧分享

    這里給大家分享2個(gè)可以讓django模型中的字段和model名顯示為中文的小技巧,非常的簡(jiǎn)單實(shí)用,給需要的小伙伴參考下。
    2014-11-11
  • Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼

    Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼

    這篇文章主要介紹了Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼,幫助大家更好的理解和使用python,提高辦公效率,感興趣的朋友可以了解下
    2020-11-11
  • 用python基于appium模塊開(kāi)發(fā)一個(gè)自動(dòng)收取能量的小助手

    用python基于appium模塊開(kāi)發(fā)一個(gè)自動(dòng)收取能量的小助手

    大家都有了解過(guò)螞蟻森林吧,本篇文章帶給你自動(dòng)收取螞蟻森林能量的思路與方法,基于appium模塊開(kāi)發(fā)一個(gè)自動(dòng)收取能量的小助手,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值
    2021-09-09
  • python的open函數(shù)使用案例代碼

    python的open函數(shù)使用案例代碼

    python打開(kāi)文件使用open()函數(shù),返回一個(gè)指向文件的指針,在python中使用open函數(shù)對(duì)文件進(jìn)行處理,這篇文章主要介紹了python中的open函數(shù)使用,需要的朋友可以參考下
    2023-02-02
  • Python使用MySQL8.2讀寫分離實(shí)現(xiàn)示例詳解

    Python使用MySQL8.2讀寫分離實(shí)現(xiàn)示例詳解

    在這篇文章中,我們將了解如何將?MySQL?8.2?的讀寫分離功能與?MySQL-Connector/Python?一起使用的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 用Python寫一個(gè)自動(dòng)木馬程序

    用Python寫一個(gè)自動(dòng)木馬程序

    這篇文章主要介紹了用Python寫一個(gè)自動(dòng)木馬程序的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中Functools模塊的高級(jí)操作詳解

    Python中Functools模塊的高級(jí)操作詳解

    functools模塊是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)寶庫(kù),提供了一些有用的功能,可以幫助您更好地利用函數(shù)的潛力,下面小編就來(lái)為大家介紹一下functools模塊的相關(guān)具體使用吧
    2023-11-11
  • 使用Python創(chuàng)建一個(gè)視頻管理器并實(shí)現(xiàn)視頻截圖功能

    使用Python創(chuàng)建一個(gè)視頻管理器并實(shí)現(xiàn)視頻截圖功能

    在這篇博客中,我將向大家展示如何使用 wxPython 創(chuàng)建一個(gè)簡(jiǎn)單的圖形用戶界面 (GUI) 應(yīng)用程序,該應(yīng)用程序可以管理視頻文件列表、播放視頻,并生成視頻截圖,我們將逐步實(shí)現(xiàn)這些功能,并確保代碼易于理解和擴(kuò)展,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-08-08
  • django配置app中的靜態(tài)文件步驟

    django配置app中的靜態(tài)文件步驟

    這篇文章主要介紹了django配置app中的靜態(tài)文件步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • 解決python3.x安裝numpy成功但import出錯(cuò)的問(wèn)題

    解決python3.x安裝numpy成功但import出錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決python3.x安裝numpy成功但import出錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論