我在TurboGears中2的形式,具有一個文本字段的電子郵件的列表。有沒有一種簡單的方法使用ToscaWidgets或FormEncode鏈接表單驗證器的設置和電子郵件,或者我必須爲此編寫我自己的驗證器?
0
A
回答
0
我認爲它應該更像下面。它具有嘗試每封電子郵件的優勢,而不是僅僅停留在第一個無效郵件上。它還會將錯誤添加到狀態,以便您可以分辨哪些錯誤。
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驗證器這樣的字段中。我發現沒有辦法做到這一點,除非我創建了自己的驗證器。爲了完整起見,我在這裏發佈它,所以其他人可以受益。
1
從http://formencode.org/Validator.html
另一個值得注意的驗證器是formencode.compound.All - 這是一個化合物驗證器 - 即,它是採用驗證作爲輸入的驗證器。模式就是一個例子。在這種情況下,All都會接受一個驗證器列表並依次應用它們中的每一個。 formencode.compound.Any是它的讚美,它使用列表中的第一個通過驗證器。
0
隨着FormEncode validators - 管道和包裝,你可以:
from formencode import validators, compound
compound.Pipe(validators.Wrapper(to_python=lambda v: v.split(',')),
validators.Email())
相關問題
- 1. 快遞-校驗中斷校驗器鏈
- 2. formencode有條件驗證
- 3. 主塔,FormEncode和外部驗證
- 4. RS232:要校驗還是不要校驗?
- 5. Formencode和空值
- 6. Formencode忽略if_missing
- 7. 協議校驗
- 8. 校驗值
- 9. 校驗失敗
- 10. 忽略校驗
- 11. 找到校驗
- 12. 校驗值「1」
- 13. 校驗在Delphi
- 14. 校驗值
- 15. 校驗值
- 16. 計算校驗
- 17. 校驗空值
- 18. 錯誤校驗
- 19. 二郎 - 校驗
- 20. Jquery校驗和
- 21. 校驗值
- 22. maven:「校驗和校驗失敗,沒有可用的校驗和」,爲什麼?
- 23. IPV4頭校驗和驗證
- 24. Python django sqlalchemy和formencode
- 25. 將UDP/TCP校驗
- 26. 校驗和VBScript中
- 27. W3C校驗錯誤
- 28. 校驗團塊(GAE)
- 29. MD5/SHA1校驗和
- 30. 校驗值相同
有趣,我喜歡的升級。 – Robbie 2009-07-16 02:11:20