在web2py表单中添加其他验证要求?

时间:2012-08-04 03:12:24

标签: python web2py

我知道如何在数据库级别向SQLFORM字段添加验证。但是,我找不到任何关于在个人表格层面上这样做的事情。理想情况下,我可以拥有一个现有的SQLFORM并说出类似的内容:

form.field.requires = # some extra validator

有这样的东西吗?

1 个答案:

答案 0 :(得分:2)

首先,请注意,web2py验证程序永远不会处于数据库级别,即使指定为表定义的一部分 - 它们也始终在表单级别强制执行。

SQLFORM用于构建表单字段的INPUT()SELECT()TEXTAREA()帮助程序都采用“requires”属性,该属性可以是单个验证程序或验证程序列表。在创建表单时,SQLFORM会自动将数据库表字段的验证器复制到关联的表单窗口小部件。因此,最简单的方法是在创建SQLFORM之前为数据库表字段指定验证器:

def myform():
    db.mytable.myfield.requires = IS_IN_SET(['a', 'b', 'c'])
    form = SQLFORM(db.mytable).process()
    return dict(form=form)

在这种情况下,SQLFORM会将验证器从db.mytable.myfield复制到表单中关联的“myfield”小部件。

您还可以在创建表单后(但在处理表单之前)将验证程序直接添加到窗口小部件:

form = SQLFORM(db.mytable)
form.custom.widget.myfield['requires'] = IS_IN_SET(['a', 'b', 'c'])
form.process()

访问字段小部件的另一种方法:

form.element('input[name=myfield]')['requires'] = IS_IN_SET(['a', 'b', 'c'])
相关问题