- TurboGears 教程
- TurboGears - 首页
- TurboGears - 概述
- TurboGears - 环境
- TurboGears - 第一个程序
- TurboGears - 依赖项
- TurboGears - 提供模板
- TurboGears - HTTP 方法
- Genshi 模板语言
- TurboGears - 包含
- TurboGears - JSON 渲染
- TurboGears - URL 层次结构
- TurboGears - Toscawidgets 表单
- TurboGears - 验证
- TurboGears - 闪存消息
- TurboGears - Cookie 和会话
- TurboGears - 缓存
- TurboGears - Sqlalchemy
- TurboGears - 创建模型
- TurboGears - CRUD 操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 钩子
- TurboGears - 编写扩展
- TurboGears - 可插拔应用程序
- TurboGears - RESTful 应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用资源
- TurboGears - 讨论
TurboGears – 验证
一个好的表单小部件库应该具有输入验证功能。例如,应该强制用户在必填字段中输入数据,或者验证电子邮件字段是否包含有效的电子邮件,而无需使用任何其他编程方法(如 JavaScript 函数)进行验证。
早期版本的 ToscaWidgets 表单库依赖于 FormEncode 模块来支持验证。ToscaWidgets2 现在在 tw2.core 模块中提供了内置的验证支持。但是,仍然可以使用 FormEncode 验证技术。
为了使 ToscaWidgets 表单进行验证,使用 @validate 装饰器。
@validate(form, error_handler, validators)
“form” 是要验证的 ToscaWidgets 表单对象。
“error-handler” 是用于处理表单错误的控制器方法。
“validators” 是一个包含 FormEncode 验证器的字典对象。
验证器类型
tw2.core 模块包含一个验证器类,其他验证器都是从此类继承而来。也可以基于此设计自定义验证器。下面描述了一些重要的验证器:
LengthValidator – 检查值是否具有规定的长度。最小和最大限制由 min 和 max 参数定义。长度低于和高于 min 和 max 的自定义消息可以分别指定为 tooshort 和 toolong 参数。
tw2.core.LengthValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
RangeValidator – 通常与 RangeField 一起使用。它用于验证数值字段的值是否在最小和最大限制范围内。tooshort 和 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 – 非常有用,可以确保用户输入的日期有效。日期格式(默认为 Y-M-D)和错误消息可自定义。还可以指定最小和最大日期限制。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 的子类。