安装
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 FlaskForm from 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标准字段如表:
WTForms内建的验证函数如表:
渲染表单
<!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
标签:
留言评论