FormEncode validar: las palabras separadas por una coma
-
29-09-2019 - |
Pregunta
¿Cómo validar palabras dividido por una coma por FormEncode?
Algo como esto:
"foo1, foo2, foo3" -> ["foo1", "foo2", "foo3"]
Solución
Usted probablemente necesitará un encargo validador . Aquí está un ejemplo rápido:
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)
Por supuesto, tendrá que añadir la validación específica para su caso de uso.
Otros consejos
Suponiendo que cada palabra está separado por una coma y un espacio (', '
):
>>> x = "foo1, bar2, foo3"
>>> x.split(', ')
['foo1', 'bar2', 'foo3']
Y a continuación, pasar a esa lista a FormEncode y tienen que hacer lo que tiene que hacer.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow