Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向web2py表单添加附加验证要求?_Python_Web2py - Fatal编程技术网

Python 向web2py表单添加附加验证要求?

Python 向web2py表单添加附加验证要求?,python,web2py,Python,Web2py,我知道如何在数据库级别向SQLFORM字段添加验证。但是,我找不到任何关于在单个表单级别执行此操作的信息。理想情况下,我可以拥有一个现有的SQLFORM,并说: form.field.requires = # some extra validator 是否有类似的情况?首先,请注意,web2py验证器从来都不在数据库级别,即使指定为表定义的一部分,它们始终在表单级别强制执行 SQLFORM用于构建表单字段的输入、选择和文本区域帮助器都具有requires属性,该属性可以是单个验证器或验证器列表

我知道如何在数据库级别向SQLFORM字段添加验证。但是,我找不到任何关于在单个表单级别执行此操作的信息。理想情况下,我可以拥有一个现有的SQLFORM,并说:

form.field.requires = # some extra validator

是否有类似的情况?

首先,请注意,web2py验证器从来都不在数据库级别,即使指定为表定义的一部分,它们始终在表单级别强制执行

SQLFORM用于构建表单字段的输入、选择和文本区域帮助器都具有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'])