Flask表单
原生表单
-
添加模板文件login.html,内容如下:
<form method="post" action="{ { url_for('check') }}">
用户名:<input name="username" type="text" />
<input type="submit" value="立即登录" />
</form>
-
视图函数,如下:
# 登录
@app.route('/login/')
def login():
return render_template('login.html')
# 校验
@app.route('/check/', methods=['POST'])
def check():
return 'Hello %s !' % request.form['username']
-
将登录页面和校验的路由合并,如下:
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
return 'Hello %s !' % request.form['username']
一个路由处理时,表单的action属性不用书写,默认提交到当前路由。
flask-wtf
-
说明:是一个用于表单处理的扩展库,提供了CSRF、校验等功能,使用非常方便
-
安装:
pip install flask-wtf
-
使用:
定义表单类:
# 导入表单基类
from flask_wtf import FlaskForm
# 导入字段类型
from wtforms import StringField, SubmitField
# 导入验证器类
from wtforms.validators import DataRequired