Forms web2py表单验证过程中出现了什么问题?

Forms web2py表单验证过程中出现了什么问题?,forms,web2py,Forms,Web2py,我有一个相当简单的web2py表单,其中有一些验证程序,比如,字段上的IS_FLOAT_在_范围内(…)。当我尝试提交表单时,如果表单中有未通过验证的字段,则表单将无法通过第一次验证,但不会报告有任何错误。如果我随后重新提交相同的表单,验证将再次失败 更糟糕的是,如果我提交了有效的信息,除非我提交两次相同的表格,否则它不会提交。视图只是{{=form} 控制器如下所示: @auth.requires_login() def addpipelines(): form = FORM(INPU

我有一个相当简单的web2py表单,其中有一些验证程序,比如,字段上的IS_FLOAT_在_范围内(…)。当我尝试提交表单时,如果表单中有未通过验证的字段,则表单将无法通过第一次验证,但不会报告有任何错误。如果我随后重新提交相同的表单,验证将再次失败

更糟糕的是,如果我提交了有效的信息,除非我提交两次相同的表格,否则它不会提交。视图只是
{{=form}

控制器如下所示:

@auth.requires_login()
def addpipelines():
    form = FORM(INPUT(_name="type", _value="insert", _type="hidden"),
            INPUT(_name="project", _value="Project", requires=IS_NOT_EMPTY()),
            INPUT(_name="value", _value="Value", requires=IS_FLOAT_IN_RANGE(-1e100, 1e100)),
            BR(), BR(),
            INPUT(_type="submit", _value="Add"),
           _method="POST")

    if request.post_vars.type == "insert" and form.process().accepted:
       request.post_vars["blub"] = "blargh"

    return dict(form=form)
```

注意,在Python中,
前面的部分为false时,
后面的部分将不会被计算,因此只有在提交表单时才会调用
form.process()
。但是,要使表单处理正常工作,在首次创建表单时还必须调用
form.process()
(因为它添加了一个隐藏的_formkey字段,并使用会话中放置的formkey副本检查其值,以防CSRF攻击和双重提交)。相反,请尝试切换条件的顺序:

if form.process().accepted and request.post_vars.type == "insert":
注意,在Python中,
前面的部分为false时,
后面的部分将不会被计算,因此只有在提交表单时才会调用
form.process()
。但是,要使表单处理正常工作,在首次创建表单时还必须调用
form.process()
(因为它添加了一个隐藏的_formkey字段,并使用会话中放置的formkey副本检查其值,以防CSRF攻击和双重提交)。相反,请尝试切换条件的顺序:

if form.process().accepted and request.post_vars.type == "insert":