FastNetMon

Sunday, 14 March 2010

Pylons: валидация форм посредством ToscaWidgets

В первой части статьи мы научились просто отображать формы: http://phpsuxx.blogspot.com/2010/03/pylons-toscawidgets.html Теперь мы добавим к этому функцию валидации входных данных от форм. На начальном этапе у Вас должен быть проект со всеми правками с прошлого примера. Руководствоваться мы будем вот этим: http://toscawidgets.org/documentation/tw.forms/tutorials/validate_pylons.html

Открываем код нашего контроллера:
vi myapp/controllers/main.py


Добавляем в самый верх подключение модуля валидации:

from tw.mods.pylonshf import validate


Чуть ниже него добавляем (устанавливаем дополнительный валидатор, чтобы год точно был целым числом):

test_form = twf.TableForm('test_form', action='/main/tosca_save', children=[
twf.HiddenField('id'),
twf.TextField('title'),
twf.TextField('year', size=4, validator=twf.validators.Int),
twf.CalendarDatePicker('release_date'),
twf.SingleSelectField('genera', options=['', 'Action', 'Comedy', 'Other']),
twf.TextArea('description'),
])


Также удаляем старый метод tosca и вместо него добавляем следующее:

def tosca(self, **kw):
return test_form()

@validate(form=test_form, error_handler='index')
def tosca_save(self, **kw):
return str(kw)


То есть, если данные валидны (в поле year целое число), они будут переданы обработчику tosca_save и выданы на экран. Иначе будет сделан "редирет" (в кавычках потому что будет просто выдано его содержимое ) на index контроллер. Ну вот теперь у нас есть крайне удобный способ обработки форм без тупой рутины :)

No comments :

Post a Comment

Note: only a member of this blog may post a comment.