1

我有一个包含一些输入文本框和一些选择框的表单。我的验证在文本框上工作得很好。我不在乎是否有任何选择框保留默认值,但每次我提交表单时,它都会进入一个 pylons 错误页面,上面写着“无效:请输入...的值”但我不希望那样发生。

这是我的验证器功能:

class Registration(formencode.Schema):
    allow_extra_fields=True
    first_name = formencode.validators.String(strip=True, not_empty=True)
    last_name = formencode.validators.String(strip=True, not_empty=True)
    address = formencode.validators.String(strip=True, not_empty=True)
    phone = formencode.validators.PhoneNumber(strip=True, not_empty=True)
    email = formencode.validators.Email(resolve_domain=True, not_empty=True)
    messages = {
        'tooLow': "You must be at least 18 in order to register for an event.",
        'tooHigh': "You obviously are not that old.  Please enter your actual age.",
    }
    age = formencode.validators.Int(min=18, max=999, not_empty=True, messages=messages)

我认为使用 allow_extra_fields = True 如果留空/默认,它将允许函数中未提供的表单中的字段通过。我选择了应该忽略的名为“听到”、“频率”和“级别”的框。

在这里的任何帮助将不胜感激。

4

2 回答 2

2

关于你的formencode.validators方法:

  • 如果not_empty=False您的表单正在提交字段并且值是空字符串,请使用此选项。参数 not_empty false 就是您所说的:空是有效值。
  • 如果字段不存在,则使用if_missing = Nonewhich 会将您的结果设置为None.
于 2012-11-05T21:30:50.700 回答
0

我认为您应该在其中添加以下行

filter_extra_fields = 真

于 2011-05-07T09:56:39.727 回答