网站备案代理公司,网站制作的管理,克隆wordpress网页,资源站建站技术文章目录 一、使用Flask-WTF处理表单1.1 安装Flask-WTF库1.2 定义WTForms表单类常用的WTForm字段实例化字段类常用参数常用的WTForm验证器 1.3 输出HTML代码使用render_kw属性在调用字段时传入 1.4 在模板中渲染表单 在web程序中#xff0c;表单是用户交互最常见的方式之一。用… 文章目录 一、使用Flask-WTF处理表单1.1 安装Flask-WTF库1.2 定义WTForms表单类常用的WTForm字段实例化字段类常用参数常用的WTForm验证器 1.3 输出HTML代码使用render_kw属性在调用字段时传入 1.4 在模板中渲染表单 在web程序中表单是用户交互最常见的方式之一。用户注册、登陆、撰写文章、编辑设置无一不用到表单。 一、使用Flask-WTF处理表单
1.1 安装Flask-WTF库
pipenv install flask-wtf
pip install flask-wtfflask-wtf默认为每个表单开启CSRF保护它会为我们自动生成和验证CSRF令牌。所以我们应该设置
app.secret_key dadesjdajdhadheuisdjakj1.2 定义WTForms表单类
from wtforms import Form, StringField, IntegerField, validatorsclass MyForm(Form):name StringField(name, [validators.Length(min4, max25)])age IntegerField(Age, [validators.NumberRange(min0, max100)])在这个例子中我们使用了StringField和IntegerField来分别定义了name和age两个字段。每个字段都有一个标签即’Name’和’Age’以及一些验证器validators来验证用户提交的数据是否符合要求。例如validators.Length(min4, max25)表示name字段的长度必须在4到25个字符之间而validators.NumberRange(min0, max100)表示age字段的值必须在0到100之间。
常用的WTForm字段
字段类说明对应的html表示StringField文本字段用于接收文本输入input typetextPasswordField密码字段用于接收密码输入input typepasswordTextAreaField多行文本字段用于接收多行文本输入textarea/textareaIntegerField整数字段用于接收整数输入input typenumberBooleanField布尔字段用于接收布尔值输入input typecheckboxSelectField下拉选择字段用于从预定义选项中选择一个值。selectoption.../option/selectRadioField单选按钮字段用于从预定义选项中选择一个值。input typeradioFileField文件上传字段用于上传文件。input typefile
实例化字段类常用参数
参数说明label字段的标签Label或名称Name用于在表单中标识该字段。validators包含一个或多个验证器对象的列表用于验证输入数据是否符合指定规则。default字段的默认值。description字段的描述信息通常用于在页面上显示字段的说明文本。render_kw包含一些HTML属性和值的字典用于向字段的HTML表示中添加额外的属性和样式。choices可选的预定义选项列表用于下拉选择字段和单选按钮字段。coerce指定将输入值转换为另一种类型的函数例如将字符串转换为整数。filters包含一个或多个过滤器对象的列表用于在表单提交前对输入数据进行处理。
常用的WTForm验证器
验证器说明DataRequired验证字段必须包含数据。Length验证输入数据的长度是否在指定范围内。Email验证输入数据是否为有效的电子邮件地址。EqualTo验证两个字段的值是否相等。NumberRange验证输入数据是否在指定的数字范围内。Regexp使用正则表达式验证输入数据是否符合指定模式。
name StringField(Your name, validators[DataRequired(messageu名字不能为空)])当使用flask-wtf定义表单时我们仍然使用WTForm提供的字段类和验证器创建的形式也一样只是表单类要继承flask-wtf提供的FlaskForm类。
from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField, validatorsclass MyForm(FlaskForm):name StringField(name, [validators.Length(min4, max25)])age IntegerField(Age, [validators.NumberRange(min0, max100)])1.3 输出HTML代码
默认情况下WTForm输出的字段HTML代码只包含id和name属性属性值均为表单类中对应的字段属性名称。如果要添加额外的属性通常有两种方法
使用render_kw属性
username StringField(Username, render_kw{placeholder: 请输入你的账号})在调用字段时传入
form.username(stylewidth;200px;, class_bar)class 是python的保留关键字在这里我们使用class_来代替class,渲染后会得到正确的class属性。
1.4 在模板中渲染表单
form methodPOST action{{ url_for(submit_form) }}{{ form.hidden_tag() }}div classform-group{{ form.username.label(classform-label) }}{{ form.username(classform-control, placeholderEnter your username) }}{% for error in form.username.errors %}span classtext-danger{{ error }}/span{% endfor %}/divdiv classform-group{{ form.password.label(classform-label) }}{{ form.password(classform-control, placeholderEnter your password) }}{% for error in form.password.errors %}span classtext-danger{{ error }}/span{% endfor %}/divbutton typesubmit classbtn btn-primarySubmit/button
/form使用rener_kw字典或是在调用字段时传入参数来定义字段的额外HTML属性通过这种方式添加css类我们可以编写一个BootStrap风格的表单。