Flask中表单处理(九)
在Flask的应用程序中也提供了对表单的处理,对表单的处理需要安装第三方的库,安装的命令为:
pip install flask-wtf
安装成功后,这里以一个系统的注册为案例,来演示表单在flask框架里的应用。在应用表单前首先需要
导入对应的库,新创建forms的文件,改源码为:
#!/usr/bin/env python # -*-coding:utf-8 -*- from wtforms import * from wtforms.validators import * class RegisterForm(Form): username=StringField(validators=[ Length(min=3,max=10,message='用户名长度是3位至10位之间')]) password=StringField(validators=[ Length(min=3,max=12,message='密码长度在3至13位之间') ])
在flask的应用程序中,导入forms的文件,见源码:
from flask import Flask,jsonify,request,render_template,url_for,redirect from forms import * app = Flask(__name__) @app.route('/index/') def index(): return 'Hello Flask!' @app.route('/register/',methods=['GET','POST']) def register(): if request.method=='GET': return render_template('register.html') else: registerForm=RegisterForm(request.form) if registerForm.validate(): return redirect(url_for(endpoint='index')) else: return False if __name__ == '__main__': app.run(debug=True)
在这个案例中,对请求的表单做了处理,当然也可以使用表单来渲染模板文件,那么就需要在GET请求的时候
实例化RegisterForm,见修改后的源码:
@app.route('/register/',methods=['GET','POST']) def register(): if request.method=='GET': registerForm=RegisterForm(request.form) return render_template('register.html',registerForm=registerForm) else: registerForm=RegisterForm(request.form) if registerForm.validate(): return redirect(url_for('index')) else: return False
见模板文件的源码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <center> <form action="" method="post"> <p> 用户名:{{ registerForm.username }} </p> <p> 密码: {{ registerForm.password }} </p> <p> <input type="submit" value="提交"> </p> </form> </center> </body> </html>
欢迎关注微信公众号“Python自动化测试”