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 ที่ขยายได้