TurboGears - การตรวจสอบความถูกต้อง
ไลบรารีวิดเจ็ต Forms ที่ดีควรมีคุณลักษณะการตรวจสอบอินพุต ตัวอย่างเช่นผู้ใช้ควรถูกบังคับให้ป้อนข้อมูลในฟิลด์บังคับหรือตรวจสอบว่าฟิลด์อีเมลมีอีเมลที่ถูกต้องหรือไม่โดยไม่ต้องใช้วิธีการทางโปรแกรมอื่น ๆ (เช่นฟังก์ชัน JavaScript) ในการตรวจสอบความถูกต้อง
ToscaWidgets Forms Library เวอร์ชันก่อนหน้านี้เคยอาศัยโมดูล FormEncode สำหรับการสนับสนุนการตรวจสอบความถูกต้อง ToscaWidgets2 มีการรองรับการตรวจสอบความถูกต้องในตัวในโมดูล tw2.core แล้ว อย่างไรก็ตามยังคงสามารถใช้เทคนิคการตรวจสอบความถูกต้องของ FormEncode ได้
ในการใช้แบบฟอร์ม ToscaWidgets ในการตรวจสอบความถูกต้องจะใช้ @validate มัณฑนากร
@validate(form, error_handler, validators)
’form’ คืออ็อบเจ็กต์ฟอร์ม ToscaWidgets ที่ต้องตรวจสอบ
‘error-handler’ เป็นวิธีการควบคุมที่ใช้ในการจัดการข้อผิดพลาดของฟอร์ม
‘validators’ เป็นอ็อบเจ็กต์พจนานุกรมที่มีตัวตรวจสอบ FormEncode
ประเภทของ Validator
โมดูล tw2.core มีคลาสตัวตรวจสอบความถูกต้องซึ่งตัวตรวจสอบความถูกต้องอื่น ๆ จะสืบทอดมา นอกจากนี้ยังสามารถออกแบบตัวตรวจสอบความถูกต้องที่กำหนดเองได้ ตัวตรวจสอบความถูกต้องที่สำคัญบางส่วนมีการอธิบายไว้ด้านล่าง -
LengthValidator- ตรวจสอบว่าค่ามีความยาวตามที่กำหนดหรือไม่ ขีด จำกัด ต่ำสุดและสูงสุดถูกกำหนดด้วยพารามิเตอร์ขั้นต่ำและสูงสุด ข้อความที่กำหนดเองสำหรับความยาวด้านล่างและด้านบนขั้นต่ำและสูงสุดสามารถระบุเป็นพารามิเตอร์ 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- มีประโยชน์มากเพื่อให้แน่ใจว่าข้อมูลที่ผู้ใช้ป้อนเป็นวันที่ที่ถูกต้อง รูปแบบวันที่ (ค่าเริ่มต้นคือ 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 และ validators ทั้งหมดซึ่งเป็นคลาสย่อยของ CompoundValidator ที่ขยายได้