2016-11-15 5 views
0

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

Мой первоначальный тест состоял в том, чтобы попытаться создать межполевую форму [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',)) 

Я затем передать форму на мой мако шаблон и назвать: -

${form.render() | n} 

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

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

[1] - http://deformdemo.repoze.org/interfield/

ответ

0

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

try: 
    appstruct = form.validate(request.POST.items()) 
except deform.ValidationFailure as e: 
    return {'form': e.render()} 
+0

Пожалуйста, см деформировать README для пример, как писать формы деформирования https://h11.readthedocs.io/en/latest/ –

+0

Довольно уверен, что вы отправили неправильную ссылку? http://docs.pylonsproject.org/projects/deform/en/latest/index.html - это тот, который я использовал, но пропустил часть проверки. –

Смежные вопросы