Flask-WTF常用字段和验证器
一、Field常用参数:
在使用Field的时候,经常需要传递一些参数进去,以下将对一些常用的参数进行解释:
- label(第一个参数):Field的label的文本。
- validators:验证器。
- id:Field的id属性,默认不写为该属性名。
- default:默认值。
- widget:指定的html控件。
二、常用Field:
- BooleanField:布尔类型的Field,渲染出去是checkbox。
- FileField:文件上传Field。
# forms.py
from flask_wtf.file import FileField,FileAllowed,FileRequired
class UploadForm(FlaskForm):
avatar = FileField(u'头像:',validators=[FileRequired(),FileAllowed([])])
# app.py
@app.route('/profile/',methods=('POST','GET'))
def profile():
form = ProfileForm()
if form.validate_on_submit():
filename = secure_filename(form.avatar.data.filename)
form.avatar.data.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return u'上传成功'
return render_template('profile.html',form=form)
- FloatField:浮点数类型的Field,但是渲染出去的时候是text的input。
- IntegerField:整形的Field。同FloatField。
- RadioField:radio类型的input。表单例子如下:
# form.py
class RegistrationForm(FlaskForm):
gender = wtforms.RadioField(u'性别:',validators=[DataRequired()])
模板文件代码如下:
<tr>
<td>
{{ form.gender.label }}
</td>
<td>
{% for gender in form.gender %}
{{ gender.label }}
{{ gender }}
{% endfor %}
</td>
</tr>
app.py文件的代码如下,给gender添加了choices:
@app.route('/register/',methods=['POST','GET'])
def register():
form = RegistrationForm()
form.gender.choices = [('1',u'男'),('2',u'女')]
if form.validate_on_submit():
return u'success'
return render_template('register.html',form=form)
- SelectField:类似于RadioField。看以下示例:
# forms.py
class ProfileForm(FlaskForm):
language = wtforms.SelectField('Programming Language',choices=[('cpp','C++'),('py','python'),('text','Plain Text')],validators=[DataRequired()])
再来看app.py文件:
@app.route('/profile/',methods=('POST','GET'))
def profile():
form = ProfileForm()
if form.validate_on_submit():
print form.language.data
return u'上传成功'
return render_template('profile.html',form=form)
return render_template('profile.html',form=form)
模板文件为:
<form action="/profile/" method="POST">
{{ form.csrf_token }}
{{ form.language.label }}
{{ form.language() }}
<input type="submit">
</form>
- StringField:渲染到模板中的类型为,并且是最基本的文本验证。
- PasswordField:渲染出来的是一个password的input标签。
- TextAreaField:渲染出来的是一个textarea。
三、常用的验证器:
数据发送过来,经过表单验证,因此需要验证器来进行验证,以下对一些常用的内置验证器进行讲解:
- Email:验证上传的数据是否为邮箱。
- EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
- InputRequired:原始数据的需要验证。如果不是特殊情况,应该使用InputRequired
- Length:长度限制,有min和max两个值进行限制。
- NumberRange:数字的区间,有min和max两个值限制,如果处在这两个数字之间则满足
- Regexp:自定义正则表达式。
- URL:必须要是URL的形式。
- UUID:验证UUID。
四、自定义验证字段:
使用validate_fieldname(self,field)可以对某个字段进行更加详细的验证,如下:
class ProfileForm(FlaskForm):
name = wtforms.StringField('name',[validators.InputRequired()])
def validate_name(self,field):
if len(field.data) > 5:
raise wtforms.ValidationError(u'超过5个字符')
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/61404.html