0
如何验证FormEncode用逗号分隔的单词?FormEncode validate:用逗号分隔的词
事情是这样的:
"foo1, foo2, foo3" -> ["foo1", "foo2", "foo3"]
如何验证FormEncode用逗号分隔的单词?FormEncode validate:用逗号分隔的词
事情是这样的:
"foo1, foo2, foo3" -> ["foo1", "foo2", "foo3"]
您可能需要一个custom validator。这里有一个简单的例子:
import formencode
class CommaSepList(formencode.validators.FancyValidator):
def _to_python(self, value, state):
return value.split(",")
def validate_python(self, value, state):
for elem in value:
if elem == "":
raise formencode.Invalid("an element of the list is empty", value, state)
>>> CommaSepList.to_python("1,2,3")
['1', '2', '3']
>>> CommaSepList.to_python("1,,")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.5/site-packages/FormEncode-1.2.3dev-py2.5.egg/formencode/api.py", line 416, in to_python
vp(value, state)
File "myValidator.py", line 17, in validate_python
raise formencode.Invalid("an element of the list is empty", value, state)
当然,你会想添加特定于你的用例的验证。
假设每个字由一个逗号和空格(', '
)分隔:
>>> x = "foo1, bar2, foo3"
>>> x.split(', ')
['foo1', 'bar2', 'foo3']
然后再传递到FormEncode该列表,并将它做什么你需要它来做。
这种方法通常在通过列表理解进行管理时最好。例如'[j for j in [i.strip()for i in value.split(“,”)] if j]' – 2015-08-25 16:33:15