使用WTF实现web表单

it2022-05-05  182

使用WTF实现web表单

WTForms支持的HTML标准字段
字段类型说明BooleanField复选框,值为True和FalseDateField文本字段,值为datetime.date格式DareTimeField文本字段,值为datetime.datetime格式FileField文件上传字段HiddenField隐藏的文本字段MultipleFileField多文本上传字段FieldList一组指定类型的字段FloatField文本字段,值为浮点数FormField把一个表单作为字段嵌入另一个表单IntegerField文本字段,值为整数PasswordField密码文本字段RadioField一组单选按钮SelectField下拉列表SelectMultipleField下拉列表,可选择多个值SubmitField表单提交按钮StringField文本字段TextAreaField多行文本字段

WTForms验证函数

验证函数说明DateRequired确保转换类型后字段中有数据Email验证电子邮件地址EqualTo比较两个字段的值,常用于要求输入两次密码进行确认的时候InputRequired确保转换类型前字段中有数据IPAddress验证IPv4网络地址Length验证输入字符串的长度MacAddress验证MAC地址NumberRange验证输入的值在数字范围之内Optional允许字段中没有输入,将跳过其他验证函数Regexp使用正则表达式验证输入值URL验证URLUUID验证UUIDAnyOf确保输入值在一组可能的值中NoneOf确保输入值不在一组可能的值中

Flask-WTF扩展的安装

参考我的另一个博客Flask-WFT安装

在项目中导入Flask-WTF

from flask_wtf import FlaskForm

在项目中导入Flaks-WTF的HTML标准字段

from wtforms import StringField,PasswordField,SubmitField

在项目中导入Flask-WTF的验证函数

from wtforms.validators import DataRequired, EqualTo

在使用Flask-WTF拓展的时候,需要使用CSRF Token 在html页面中加入

{{ html_form.csrf_token() }}

使用Flask-WTF创建表单示例

app.py

from flask import Flask, render_template, request, flash from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, EqualTo app = Flask(__name__) app.secret_key = "dsauhfabf" class LoginForm(FlaskForm): username = StringField('用户名', validators=[DataRequired()]) password1 = PasswordField('密码', validators=[DataRequired()]) password2 = PasswordField('确认密码', validators=[DataRequired(), EqualTo('password1', "两次密码填入不一致")]) submit = SubmitField('提交') @app.route('/form', methods=['GET', 'POST']) def login(): login_form = LoginForm() if request.method == 'POST': username = request.form.get('username') password1 = request.form.get('password1') password2 = request.form.get('password2') if login_form.validate_on_submit(): return 'success' else: flash("false") return render_template('demo3.html', html_form=login_form) if __name__ == '__main__': app.run()

demo3.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post"> <br> {{ html_form.csrf_token() }} {{ html_form.username.label }}{{ html_form.username }}<br> {{ html_form.password1.label }}{{ html_form.password1 }}<br> {{ html_form.password2.label }}{{ html_form.password2 }}<br> {{ html_form.submit }}<br> {% for message in get_flashed_messages() %} {{ message }} {% endfor %} </form> </body> </html> 亓官劼 认证博客专家 Python 全栈 数据结构与算法 大家好,我是亓官劼(qí guān jié),在博客中分享数据结构与算法、Python全栈开发、Java后端开发、前端、OJ题解及各类报错信息解决方案等经验。一起加油,用知识改变命运,未来可期。若有事项需联系博主,可通过微信:qiguanjie2015 进行联系,有空会回复。

最新回复(0)