我有一个现有的(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之后)。但是,点击提交不会进行任何验证(即使是基本的&#39;您也没有输入值&#39;),而是直接返回我的view_config。
我能错过什么?
答案 0 :(得分:0)
事实证明,变形不会自动处理验证,我必须实际调用validate,如下所示: -
void func(int *q);
int main()
{
int a;
func(&a);
printf("%d \n",a);
}
void func(int *q)
{
*q = 10;
}