Web 表单是在任何一个 web 应用程序中最基本的一部分。我们将使用表单允许用户写文章,以及登录到应用程序中。
一个名为 Flask-WTF 的扩展,将 WTForms 集成到 flask 程序,可以帮助完成很多事情
表单类
表单的创建,可以通过继承从 Flask-WTF 导入的Form父类实现
from flask.ext.wtf import Form # 表单类,从第三方扩展的命名空间 导入
表单类中需要定义 属性/字段,值是字段类型类,就是将要在 HTML 中显示的表单各个字段,其实就是对 HTML 表单各种标签的包装
from wtforms import StringField, BooleanField, SubmitField, PasswordField, TextAreaField, SelectField # 字段类型类,字符串、布尔值、提交、密码、文本区域、选择框
验证器列表,检查用户填写表单时输入的内容是否符合我们的期望,有多个验证器时,需要同时通过验证
from wtforms.validators import DataRequired, Required, Length, Email , Regexp, EqualTo # 验证器,直接从 wtforms.validators 导入
如一个简单表单类:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/7/31 13:25
# @File : form.py
from flask_wtf import Form
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import Required, Length, Email
#通过继承Form类实现
class Form_d(Form):
#对应html表单中的name字段,第二个参数为一个验证函数
name=StringField('name',validators=[Required()])
#对应html表单中的pwd字段,第二个参数为一个验证函数
pwd=StringField('pwd',validators=[Required()])
submit=SubmitField('submit')
简单表单登录验证:
from flask import Flask,render_template,request
from form import Form_d
from Blue import blue
app = Flask(__name__)
app.config['SECRET_KEY']='xxx'
app.register_blueprint(blue,url_prefix='/blue')
@app.route('/')
def index():
return render_template('login.html')
#设置name和pwd的值
name='123'
password='123'
@app.route('/login',methods=['GET','POST'])
def login():
forms=Form_d()
pwd=forms.pwd.data
username=forms.name.data
if pwd==password and username==name:
return render_template('o.html')
else:
return 'eer'
if __name__ == '__main__':
app.run(port=7701)
对应登录页面
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<form action="/login" method="POST">
<span>请输入账号span>
<input type="text" name="name" id="name" placeholder="name">
<span>请输入密码span>
<input type="password" name="pwd" id="pwd" placeholder="password">
<input type="submit" name="submit">
form>
body>
html>