輕量級Web框架Flask——Web表單

安裝Flask-WTF及其依賴可使用pip安裝
pip install flask_wtf配置要求應用配置一個密鑰 。密鑰是一個由隨機字符構成的唯一字符串 , 通過加密或簽名以不同的方式提升應用的安全性
app=Flask(__name__)app.secret_key='123321'如果不設置會報錯:
RuntimeError: A secret key is required to use CSRF.表單類每個Web表單都由一個繼承自FlaskForm的類表示 。這個類定義表單中的一組字段,每個字段都用對象表示 。字段對象可附屬一個或多個驗證函數
from flask_wtf import FlaskFormfrom wtforms import *from wtforms.validators import *class NameForm(FlaskForm):username = StringField('用戶名',validators=[DataRequired()])password = PasswordField('密碼',validators=[DataRequired()])submit = SubmitField('提交')StringField類表示屬性為type="text"的HTML<input>元素 。
SubmitField類表示屬性為type="submit"的HTML<input>元素 。
【輕量級Web框架Flask——Web表單】WTForms支持的HTML標準字段如表:

輕量級Web框架Flask——Web表單

文章插圖
WTForms內建的驗證函數如表:
輕量級Web框架Flask——Web表單

文章插圖
渲染表單<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><h1>用戶注冊登錄</h1><form method="post" action="/login">{{ form.csrf_token()}}{{ form.username.label }}{{ form.username}}{{ form.password.label }}{{ form.password}}{{ form.submit }}{{errormsg}}{% for message in get_flashed_messages() %}{{ message }}{% endfor %}</form></head><body></body></html>{{ form.csrf_token()}}供Flask-WTF的CSRF防護機制使用{{ form.username.label }}取表單類中設置的標簽視圖中處理表單@app.route("/login",methods=['GET','POST'])def login():form = NameForm()if request.method == 'POST':if form.validate_on_submit():username = request.form.get('username')password =request.form.get('password')if username == 'admin' and password == 'admin':flash('登錄成功')else:return render_template('newregister.html',form = form, errormsg="登陸失敗")return render_template('newregister.html', form=form)提交表單后,如果數據能被所有驗證函數接受,那么validate_on_submit()方法的返回值為True,否則返回False 。這個函數的返回值決定是重新渲染表單還是處理表單提交的數據 。
注:這里用了一個flash(from flask import Flask,render_template,request,flash)
再渲染表單的時候使用{% for message in get_flashed_messages() %} 取遍歷取值
友情鏈接https://www.cnblogs.com/yetangjian/p/15881588.html
https://www.cnblogs.com/yetangjian/p/15676966.html
https://www.cnblogs.com/yetangjian/p/16049697.html

    推薦閱讀