轻量级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的类表示 。这个类定义表单中的一组字段,每个字段都用对象表示 。字段对象可附属一个或多个验证函数
【轻量级Web框架Flask——Web表单】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>元素 。
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

    经验总结扩展阅读