我有一个 Pylons 应用程序,并且正在使用 FormEncode 和 HtmlFill 来处理我的表单。我的模板中有一组文本字段(Mako)
<tr>
<td>码数</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
<td>${h.text('码数[]', maxlength=3, size=3)}</td>
</tr>
但是,我似乎无法弄清楚如何验证这些字段。这是我的架构中的相关条目
yardage = formencode.ForEach(formencode.validators.Int())
我正在尝试验证这些字段中的每一个都是 Int。但是,不会对这些字段进行验证。
更新 这里要求的是这个控制器的操作代码。我知道它正在工作,因为我可以验证其他表单字段。
def 提交(自我):
架构 = CourseForm()
尝试:
c.form_result = schema.to_python(dict(request.params))
除了formencode.Invalid,错误:
c.form_result = error.value
c.form_errors = error.error_dict 或 {}
c.heading = '添加课程'
html = render('/derived/course/add.html')
返回 htmlfill.render(
html,
默认值 = c.form_result,
错误 = c.form_errors
)
别的:
h.redirect_to(controler='course', action='view')
更新
IRC 建议我将元素的名称从更改yardage[]为yardage
无结果。它们都应该是整数,但将 f 放入其中一个元素不会导致它无效。正如我之前所说,我能够验证其他表单字段。下面是我的整个架构。
导入表单代码
课程表类(formencode.Schema):
allow_extra_fields = 真
filter_extra_fields = 真
name = formencode.validators.NotEmpty(messages={'empty': '名称不能为空'})
par = formencode.ForEach(formencode.validators.Int())
码数 = formencode.ForEach(formencode.validators.Int())