나는 전자 우편의 목록은 텍스트 필드가 TurboGears 2의 형태를 갖는다. ToscaWidgets 또는 FormEncode를 사용하여 Set 및 Email 용 양식 검사기를 연결하는 간단한 방법이 있습니까? 아니면이 작업을 위해 자체 유효성 검사기를 작성해야합니까?
0
A
답변
0
나는 아래와 같아야한다고 생각합니다. 첫 번째 무효화에 머물지 않고 각 전자 메일을 시도하는 이점이 있습니다. 또한 상태에 오류를 추가하여 어떤 오류가 발생했는지 알 수 있습니다. http://formencode.org/Validator.html
다른 주목할 검사기로부터
from formencode import FancyValidator, Invalid
from formencode.validators import Email
class EmailList(FancyValidator):
""" Takes a delimited (default is comma) string and returns a list of validated e-mails
Set the delimiter by passing delimiter="A_DELIMITER" to the constructor.
Also takes all arguments a FancyValidator does.
The e-mails will always be stripped of whitespace.
"""
def _to_python(self, value, state):
try:
values = str(value).split(self.delimiter)
except AttributeError:
values = str(value).split(',')
validator = formencode.ForEach(validators.Email())
validator.to_python(values, state)
return [value.strip() for value in values]
0
필자가 원하는 것은 String 및 Int 유효성 검사기와 같은 필드에만 사용할 수있는 유효성 검사기입니다. 내 자신의 유효성 검사기를 만들지 않으면이를 수행 할 방법이 없다는 것을 알았습니다. 나는 그것을 완성을 위해 여기에 올리고 있으며, 다른 사람들도 혜택을 볼 수 있습니다.
from formencode import FancyValidator, Invalid
from formencode.validators import Email
class EmailList(FancyValidator):
""" Takes a delimited (default is comma) string and returns a list of validated e-mails
Set the delimiter by passing delimiter="A_DELIMITER" to the constructor.
Also takes all arguments a FancyValidator does.
The e-mails will always be stripped of whitespace.
"""
def _to_python(self, value, state):
try:
values = str(value).split(self.delimiter)
except AttributeError:
values = str(value).split(',')
returnValues = []
emailValidator = Email()
for value in values:
returnValues.append(emailValidator._to_python(value.strip(), state))
return values
1
formencode.compound.All가있다 - 이것은 복합 검증기이다 - 즉, 입력으로 검증 걸리는 검사기이다. 스키마가 하나의 예입니다. 이 경우 All은 유효성 검사기 목록을 가져 와서 차례대로 각 유효성 검사기를 적용합니다. formencode.compound.Any는 해당 목록에서 첫 번째 전달 유효성 검사기를 사용하는 칭찬입니다. FormEncode validators와
0
- 파이프 및 래퍼, 당신은 할 수 :
from formencode import validators, compound
compound.Pipe(validators.Wrapper(to_python=lambda v: v.split(',')),
validators.Email())
흥미 나 업그레이드를 좋아한다. – Robbie
하지만 13 행은 다음 값을 다시 할당해야합니다. values = validator.to_python (values, state) – Robbie