我有一个关于控制器和Form如何在web2py中工作的问题。 考虑下一个控制器功能(来自we2py手册):
def display_form():
form=FORM('Your name:',
INPUT(_name='name', requires=IS_NOT_EMPTY()),
INPUT(_type='submit'))
if form.accepts(request,session):
response.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
return dict(form=form)
这个函数有两个目标:第一个是返回表单,第二个是告诉提交按钮要做什么。 我不明白这怎么可能。它叫了两次吗?第一次当视图需要知道什么是表单时,第二次是在按下提交按钮时? 直观地说:
^{pr2}$应该在一些不同的职能,负责后期处理。在
它是如何工作的?在
是的,函数被调用两次。当调用该函数的URL而不发布任何表单值时,
form.accepts()
函数将失败(即返回False),因为没有提交任何数据。在这种情况下,返回的只是一个新的空白表单。当用户最终提交表单时,表单值被发布到同一个函数。在这种情况下,form.accepts()
会在request.post_vars
中找到已发布的表单数据。然后验证数据,如果验证通过,则返回True,response.flash
被设置为'formaccepted'。在这被称为回发或自我提交。有关详细信息,请参见here。在
相关问题 更多 >
编程相关推荐