Early versions of ToscaWidgets Forms Library used to rely on FormEncode module for validation support. ToscaWidgets2 now has built-in validation support available in tw2.core module. However, it is still possible to use FormEncode validation techniques.
In order to subject a ToscaWidgets form to validation, @validate decorator is used.
@validate(form, error_handler, validators)
- The ’form’ is the ToscaWidgets form object to be validated.
- The ‘error-handler’ is the controller method used to handle form errors.
- The ‘validators’ are a dictionary object containing FormEncode validators.
Types of Validators
The tw2.core module contains a validator class from which other validators are inherited. It is also possible to design a custom validator based on it. Some of the important validators are described below −LengthValidator − Check whether a value has a prescribed length. Minimum and maximum limits are defined with min and max parameters. Custom messages for length below and above min and max can be specified as tooshort and toolong parameter.
tw2.core.LengthValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
RangeValidator − Usually used along with RangeField. It useful
to validate value of a numeric field within minimum and maximum limits.
Messages for tooshort and toolong parameters can be customized.tw2.core.RangeValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
IntValidator − This class is derived from the RangeValidator.
This is normally used to validate if input in a normal text field is
containing integer data. Minimum and maximum limits as well as error
messages can be set. Additionally, error message for non-integer input
can be specified as ‘notint’ parameter.tw2.core.IntValidator(msgs = {‘notint’:’Must be Integer’})
OneOfValidator − This validator forces the user to select a value from the available options in the list only.tw2.core.OneOfValidator(values = [option1, option2,..],
msgs = {‘notinlist’:’Not in List’}}
DateValidator − Very useful to ensure that user input is a
valid date. Date format (default is Y-M-D) and error message are
customizable. Minimum and maximum date limits can also be specified.
DateTimeValidator is also available to verify object of DateTime class.tw2.core.DateValidator(msgs = {format = ’%Y-%m-%d’,
'baddatetime': ('baddate', ('Must follow date format $format_str'))}
EmailValidator − Validates user input against a valid email address. This class is inherited from a more general RegexValidator.tw2.core.EmailValidator(msgs = {'badregex': ('bademail',
('Must be a valid email address')) }
UrlValidator − This class is also inherited from RegexValidator. It validates the user input for a valid URL.tw2.core.UrlValidator(msgs = {'badregex': ('badurl', ('Must be a valid URL’)) }
MatchValidator − Confirms whether the value of one field is
matched with the other. This is especially useful, where user is
required to choose and confirm a password field. Typical usage of
MatchValidator is shown below −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()It is also possible to construct a compound validator, where the validation is desired to succeed, if any one of checks pass. In other cases, you may want validation to succeed, only if the input passes all the checks. For this, tw2.core provides the Any and All validators, which are subclasses of the extendable CompoundValidator.
No comments:
Post a Comment