2014-02-04 3 views
1

Как гласит название, как мне обрезать пробелы ведущего и конечного пробелов из полей ввода в web2py? Я пробовал валидатор CLEANUP(), который работает, но, к сожалению, он удаляет другие специальные символы, которые я не хочу удалять (например, ¥).Как отредактировать пробелы ведущего и конечного пробелов из полей ввода в web2py?

И какие персонажи он убирает? Это мне непонятно.

ответ

2

CLEANUP принимает аргумент regex, который по умолчанию равен '[^\x09\x0a\x0d\x20-\x7e]'. Он сначала разбивает ведущие и конечные пробелы, а затем удаляет любые символы, соответствующие регулярному выражению. Так как вам нужно только удалить пробел, вы можете поставить пустое регулярное выражение:

Field('myfield', requires=CLEANUP('')) 

Вы также можете достичь того же с валидатора:

Field('myfield', requires=lambda v: (str(v).strip(), None)) 
+0

Интересно, я не был осведомлен о форме лямбды валидаторов. Это документировано? И что представляет собой аргумент 'f'? – User

+1

Валидатор - это только вызываемый объект, который принимает объект поля и значение, и возвращает кортеж, причем первым элементом является значение (возможно, преобразованное), а второе - сообщение об ошибке или «Нет». Вы можете создать пользовательский валидатор, используя класс с методом '__call__' (как работает все встроенные валидаторы) или просто с помощью функции или лямбда. Причина, по которой объект поля передается, заключается в том, что валидатор может использовать любые соответствующие атрибуты поля. – Anthony

+0

Пример пользовательского валидатора в книге, похоже, не принимает объект поля http://www.web2py.com/book/default/chapter/07#Custom-validators есть ошибка? – User