- 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 的子類。