📅  最后修改于: 2020-10-19 03:31:05             🧑  作者: Mango
一个好的Forms小部件库应具有输入验证功能。例如,应该强迫用户在必填字段中输入数据,或者验证电子邮件字段中是否包含有效的电子邮件,而无需借助其他任何编程方式(例如JavaScript 函数)进行验证。
ToscaWidgets表单库的早期版本过去依靠FormEncode模块提供验证支持。 ToscaWidgets2现在在tw2.core模块中提供了内置的验证支持。但是,仍然可以使用FormEncode验证技术。
为了对ToscaWidgets表单进行验证,使用了@validate装饰器。
@validate(form, error_handler, validators)
在A€™备考€™就是在ToscaWidgets形成对象进行验证。
在A€~error-handler’是用于手柄形状误差的控制器的方法。
在A€~validators’是包含FormEncode验证Dictionary对象。
tw2.core模块包含一个验证器类,从该类继承其他验证器。也可以基于它设计自定义验证器。一些重要的验证器如下所述-
LengthValidator-检查值是否具有规定的长度。最小和最大限制由最小和最大参数定义。可以将长度小于min和max的自定义消息指定为tooshort和toolong参数。
tw2.core.LengthValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
RangeValidator-通常与RangeField一起使用。在最小和最大限制内验证数字字段的值很有用。可以定制有关shortshort和toolong参数的消息。
tw2.core.RangeValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
IntValidator-此类是从RangeValidator派生的。通常用于验证普通文本字段中的输入是否包含整数数据。可以设置最小和最大限制以及错误消息。此外,可以将非整数输入的错误消息指定为“ notint”参数。
tw2.core.IntValidator(msgs = {‘notint’:’Must be Integer’})
OneOfValidator-此验证器强制用户仅从列表中的可用选项中选择一个值。
tw2.core.OneOfValidator(values = [option1, option2,..],
msgs = {‘notinlist’:’Not in List’}}
DateValidator-对确保用户输入为有效日期非常有用。日期格式(默认为YMD)和错误消息是可自定义的。还可以指定最小和最大日期限制。 DateTimeValidator也可用于验证DateTime类的对象。
tw2.core.DateValidator(msgs = {format = ’%Y-%m-%d’,
'baddatetime': ('baddate', ('Must follow date format $format_str'))}
EmailValidator-根据有效的电子邮件地址验证用户输入。此类从更通用的RegexValidator继承。
tw2.core.EmailValidator(msgs = {'badregex': ('bademail',
('Must be a valid email address')) }
UrlValidator-此类也从RegexValidator继承。它验证用户输入的有效URL。
tw2.core.UrlValidator(msgs = {'badregex': ('badurl', ('Must be a valid URL’)) }
MatchValidator-确认一个字段的值是否与另一个字段匹配。当要求用户选择并确认密码字段时,这特别有用。 MatchValidator的典型用法如下所示-
import tw2.core as twc
import tw2.forms as twf
class AdmissionForm(twf.Form):
class child(twf.TableLayout):
validator = twc.MatchValidator('pw', 'pwconfirm')
pw = twf.PasswordField()
pwconfirm = twf.PasswordField()
如果任何一项检查通过,也可以构造一个复合验证器,在该复合器中希望验证成功。在其他情况下,仅当输入通过所有检查时,您才可能希望验证成功。为此,tw2.core提供了Any和All验证程序,它们是可扩展CompoundValidator的子类。