控制器如何在web2py中工作?

2024-10-02 12:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于控制器和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}$

应该在一些不同的职能,负责后期处理。在

它是如何工作的?在


Tags: name功能form表单inputresponsedef手册
1条回答
网友
1楼 · 发布于 2024-10-02 12:22:58

是的,函数被调用两次。当调用该函数的URL而不发布任何表单值时,form.accepts()函数将失败(即返回False),因为没有提交任何数据。在这种情况下,返回的只是一个新的空白表单。当用户最终提交表单时,表单值被发布到同一个函数。在这种情况下,form.accepts()会在request.post_vars中找到已发布的表单数据。然后验证数据,如果验证通过,则返回True,response.flash被设置为'formaccepted'。在

这被称为回发或自我提交。有关详细信息,请参见here。在

相关问题 更多 >

    热门问题