gpt4 book ai didi

python - Controller 如何在 web2py 中工作?

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:23 25 4
gpt4 key购买 nike

我有一个关于 Controller 和 Form 的问题在 web2py 中工作。考虑下一个 Controller 函数(来自 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)

这个函数有两个目标:第一个是返回一个表单,第二个是告诉提交按钮要做什么。我不明白这怎么可能。它被调用了两次吗?第一次 View 需要知道什么是表单,第二次按下提交按钮?直观这 block :

if form.accepts(request,session):
response.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'

应该在负责后期处理的一些不同的函数中。

它是如何工作的?

最佳答案

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

这称为回发或自行提交。有关更多信息,请参阅 here .

关于python - Controller 如何在 web2py 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com