Добавление формы деформации в существующую страницу (шаблон мако) валидатор не вызывается?

У меня есть существующий проект пирамиды (WIP), в котором все упрощенные формы выполняются вручную. Поскольку требования пользователей постоянно усложнялись, я хотел интегрировать формы деформации, чтобы упростить свои собственные задачи по обслуживанию/программированию.

Мой первоначальный тест состоял в том, чтобы попытаться создать межполевую форму[1], цель которой состояла в том, чтобы гарантировать, что определенная дата предшествует другой дате в форме. Вот упрощенное определение схемы и валидатора:

class Schema(colander.MappingSchema):
    startdate = colander.SchemaNode(colander.Date())
    enddate = colander.SchemaNode(colander.Date())
def validator(form, value):
    if value['enddate'] - value['startdate'] < 0:
        exc = colander.Invalid(form, 'Start date must precede End date')
        exc['enddate'] = 'Must be after %s' % value['startdate']
        raise exc

schema = Schema(validator=validator)
form = deform.Form(schema, buttons=('submit',))

Затем я передаю форму моему шаблону mako и вызываю: -

${form.render() | n}

Это правильно отображает форму, и мои селекторы дат работают (конечно, после того, как мне пришлось возиться с загрузкой правильного CSS и javascripts). Однако щелчок «Отправить» не выполняет никакой проверки (даже базового «вы не ввели значение»), вместо этого он возвращается прямо к моему view_config.

Что я мог упустить?

[1] – https://deformdemo.pylonsproject.org/interfield/


person Ng Oon-Ee    schedule 15.11.2016    source источник


Ответы (1)


Оказывается, деформация не обрабатывает проверку автоматически, и мне действительно нужно вызвать проверку, как показано ниже:

try:
    appstruct = form.validate(request.POST.items())
except deform.ValidationFailure as e:
    return {'form': e.render()}
person Ng Oon-Ee    schedule 15.11.2016
comment
Пожалуйста, посмотрите README для деформирования для примера того, как писать формы деформирования h11.readthedocs.io/en/latest - person Mikko Ohtamaa; 18.11.2016
comment
Вы точно не ту ссылку разместили? docs.pylonsproject.org/projects/deform/en/latest/index. html — это тот, который я использовал, но пропустил часть проверки. - person Ng Oon-Ee; 18.11.2016