TurboGears – 검증

좋은 Forms 위젯 라이브러리에는 입력 유효성 검사 기능이 있어야합니다. 예를 들어, 사용자는 유효성 검사를 위해 다른 프로그래밍 방식 (예 : JavaScript 함수)에 의존하지 않고 필수 필드에 데이터를 입력하거나 이메일 필드에 유효한 이메일이 포함되어 있는지 확인해야합니다.

ToscaWidgets Forms Library의 초기 버전은 유효성 검사 지원을 위해 FormEncode 모듈에 의존하는 데 사용되었습니다. ToscaWidgets2에는 이제 tw2.core 모듈에서 사용할 수있는 기본 제공 유효성 검사 지원이 있습니다. 그러나 FormEncode 유효성 검사 기술을 사용할 수 있습니다.

ToscaWidgets 양식을 유효성 검사에 적용하기 위해 @validate 데코레이터가 사용됩니다.

@validate(form, error_handler, validators)
  • 그만큼 ’form’ 유효성을 검사 할 ToscaWidgets 양식 개체입니다.

  • 그만큼 ‘error-handler’ 양식 오류를 처리하는 데 사용되는 컨트롤러 메서드입니다.

  • 그만큼 ‘validators’ FormEncode 유효성 검사기를 포함하는 사전 개체입니다.

유효성 검사기 유형

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와 함께 사용됩니다. 최소 및 최대 한계 내에서 숫자 필드의 값을 검증하는 것이 유용합니다. 너무 짧고 도구가 많은 매개 변수에 대한 메시지를 사용자 정의 할 수 있습니다.

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는 확장 가능한 CompoundValidator의 하위 클래스 인 Any 및 All 유효성 검사기를 제공합니다.