我有一个现有的(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。
我会错过什么?