2014-11-22 6 views
0

내 사용자 양식에 'email'필드를 선택 사항으로 유지하고 싶지만 전자 메일이 언급 된 경우 내 사용자 정의 유효성 검사기가 작동해야합니다. 다음 코드가 작동 할 것으로 예상했습니다. 그러나 불행하게도 그것은 작동하지 않습니다 : 이메일 필드가 비어WTForms의 선택적 필드 유효성 검사

  • 경우에는 아무 것도 할 필요가 없습니다, 그것은 공백이 괜찮은지 :
    class AddUserForm(Form): 
        email = TextField('Email ID', [validators.Optional(strip_whitespace=True)]) 
    
        @staticmethod 
        validate_email(form, field): 
         if field.data is not None: 
          if not is_valid_email_id_custom_function(field.data): 
           raise ValidationError('please enter a valid email id') 
    

    나는 다음과 같은 효과를합니다.
  • 이메일 입력란에 데이터가있는 경우 허용 여부를 확인하십시오.

전자 메일 필드를 선택 사항이라고 선언하면 유효성 검사를 완전히 건너 뜁니다. 이 문제를 해결하려면 해결 방법이 있지만이를 해결할 수있는 관용적이고 직접적인 방법이 있습니까?

답변

0

validate_email@staticmethod으로 정의하는 것이 문제입니다. 인라인 유효성 검사기는 정적 메서드가 아니라 인스턴스 메서드로 수행되도록 설계되었습니다. 단순히 데코레이터를 제거하면 전자 메일이 제공 될 때마다 유효성 검사기가 작동합니다.