1. 程式人生 > >flask--表單

flask--表單

今天我說一下表單,提到表單就應該想起來flash閃現。

Web表單是Web應用程式的基本功能,他是HTML頁面中負責資料採集的部件。表單有三個部分組成:表單標籤,表單域,表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器。

在flask框架中使用表單我們可以使用Flask-WTF擴充套件,它呢封裝了WTforms,並且他有驗證表單資料的功能。

當然使用Flask-WTF需要配置引數SECRET_KEY----- CSRF_ENABLED是為了CSRF(跨站請求偽造)保護。SECRET_KEY 用來生成加密令牌,當CSRF啟用的時候,該設定會根據設定的密匙生成加密令牌。

我們可以用表單可以進行登入,註冊 ,但是登入,註冊的時候我們必須得驗證 ~ 這樣才能保證業務的嚴謹性。

 

使用Flask-WTF實現表單

先配置一個引數,關閉CSRF效驗

在模板頁面上寫表格

<form method ="post">

{{form.username.lable}}{{form.username}}

{{form.password.lable}}{{form.password}}

{{form.password1.lable}}{{form.password1}}

{{form.submit}}

</form>

檢視函式:

匯入的模組from flask import Flask,render_template,flash

#匯入wtf擴充套件的表單類

from flask_wtf import FlaskForm

#匯入自定義表單需要的欄位

from wtforms import SubmitFiled,StringField,PasswordField

#建立一個表單類

class RegisterForm(FlaskForm):

username = StringField('使用者名稱')

password = PasswordField("密碼")

password1 = PasswordField("確認密碼")

submit = SubmitField("註冊")

 

接下來我給看一下簡單程式碼驗證。

#這是程式碼模擬登入的

<form methof="POSt"># 不寫action的話會預設提交給自己

  <lable>使用者名稱:</lable><input type="text" name="username" placeholder ="請輸入使用者名稱">

  <lable>密碼:</lable><input type="password" name="password" placeholder ="請輸入密碼>

  <lable>確認密碼:</lable><input type="password" name="password1" placeholder ="請輸入確認密碼>  

  <input type="submit" value = '註冊'>

</form>

#檢視函式中獲取表單資料驗證登入邏輯

@app.route('/yan',method=["get","post"])

def index():

if request.method =="POST"

#獲取表單提交上來的三個引數

username = request.form.get("username")

password = request.form.get("password")

password1 = request.form.get("password1")

if not all([username,password,password1]):

#向前端介面彈出一跳提示(閃現訊息)

flash("引數不足")

elif password != password1:

flash("兩次密碼不一致")

else:

#假裝做註冊操作

print(username,password,password1)

return 'sucess'

return reder_template('temp_register.html')

這個就是模擬驗證登入註冊,裡面有閃現,flash閃現可以直接跳到擁護者面前把訊息直接展示出來

if __name__=='__main__':

app.run()

執行一下就可以了

 

flash中的訊息閃現,在官方的解釋就是用來給使用者做反饋的,不過實際上這個功能只是一個記錄訊息的方法,在某一個請求中記錄訊息,在下一個請求中獲取訊息,然後做響應的處理,也就是說flask只存在於兩個相鄰的請求中“閃現”,第三次請求就不存在這個flash。  通常情況下配合模板進行呼叫,可以實現一種偽“ajax”請求的效果,基於flash模組。

WTForms是一個支援多個web框架愛的form元件,用於簡化form表單的定義和一些操作。

表單功能在有些情況下非常實用~~~~~~~