使用:
from wtforms import Formfrom wtforms.fields import simple,core,html5 # 字段来自于这里from wtforms import validators # 验证规则来自于这里from wtforms import widgets # 工具是在这里 class LoginForm(Form): user = simple.StringField( label='用户名', # 提示信息 validators=[validators.DataRequired(message='用户名不能为空.')], #验证规则的列表 widget=widgets.TextInput(), # 优先按他定义的方式渲染input标签 render_kw={'class': 'form-control'} # 为input标签设置属性添加类等!
渲染:
实例自定义的类对象,传入模板中,如果实例对象时传入了数据,该数据会被渲染到input框里{ { form.name }} # 该字段的input框{ { form.name.label }} # 该字段提示信息{ { form.name.errors[0] }} # 该字段的错误信息,建议用这种方式,下面那种获取字段的错误信息会抛出异常{ { form.errors }} # 全部的错误信息# 也可以使用for循环的方式,并且他的顺序不会错乱,因为Form内部维持了一个计数器{% for item in form %}{
{item.label}}: { {item}} { {item.errors[0] }}{% endfor %}
验证:
验证实例自定义类对象是传递数据form = LoginForm(formdata=request.form)if form.validate(): # 验证通过,打印数据 print(form.data)else: print(form.error) # 打印错误信息实例化时可传递的几种数据formdata : request.data这种有get和get_list的data : 一个字典obj : obj.字段名获得数据的,比如模型类对象from wtforms import Form, validators, widgetsfrom wtforms.fields import simple, coreclass RegForm(Form): username = simple.StringField( label="用户名", validators=[ validators.DataRequired(message="用户名不能为空"), #校验器返回错误信息在files.errors中 validators.Length(min=4, max=8, message="用户名必须大于4小于8") ], render_kw={"class":"my_class"} #定义标签的属性 ) hobby = core.SelectMultipleField( label="癖好", choices=( (1, "萝莉"), (2, "御姐"), (3, "小哥哥"), (4, "正太") ), # widget=widgets., widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), #小部件wdget渲染前端页面 coerce=int, default=(1, 4) ) 字段类型: imple是简单常用的包括:['BooleanField', 'TextAreaField', 'PasswordField', 'FileField', 'HiddenField', 'SubmitField', 'TextField']core是不太常用的( 'BooleanField', 'DecimalField', 'DateField', 'DateTimeField', 'FieldList', 'FloatField', 'FormField', 'IntegerField', 'RadioField', 'SelectField', 'SelectMultipleField', 'StringField',)html5中的标签自带正则(浏览器校验)( 'DateField', 'DateTimeField', 'DateTimeLocalField', 'DecimalField', 'DecimalRangeField', 'EmailField', 'IntegerField', 'IntegerRangeField', 'SearchField', 'TelField', 'URLField', 常用的校验规则 DataRequired:非空验证,message=错误信息 Email:邮箱格式验证,message=错误信息 Length: 长度验证,min=最短,max=最长,message=错误信息 Regexp: 正则匹配,regex正则表达式,message=错误信息 EqualTo:与其他字段的值比较是否相同,fieldname=其他字段名,message=错误信息 自定义验证-钩子# 为一个字段设置验证def validate_字段名(self, field): print(field.data) # 当前字段传过来的值 print(self.data) # 当前传过来的所有的值:name,gender...... if 验证失败: raise validators.ValidationError("继续后续验证") # raise validators.StopValidation("不再继续后续验证") 小部件: wtforms.widgets提供了许多的表单样式,每个字段都有默认的widget,通过设置widget可以修改渲染出来的样式('CheckboxInput', 'FileInput', 'HiddenInput', 'ListWidget', 'PasswordInput', 'RadioInput', 'Select', 'SubmitInput', 'TableWidget', 'TextArea', 'TextInput', 'Option')