Web2Py error: invalid function blog/thanks

Web2Py error: invalid function blog/thanks

我正在 Debian 上使用 Web2Py 构建一个简单的博客 Linux。 我有一个名为 blog.py 的控制器,我向其中添加了以下函数以及一个 if 块:

def display_form():
    form = SQLFORM(db.blog)
    if form.process().accepted:
        session.flash = 'form accepted'
        redirect(URL('thanks'))
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill out the form'
    return locals()

我使用基本模板添加了一个名为 blog/display_form.html 的 "view" html 文件,作为如下:

{{extend 'layout.html'}}
<h1>Display Form</h1>
{{=form}}

我加载了 "display_form" 博客页面,它成功地接受了所有输入,但它没有重定向到 谢谢 页。相反,浏览器会生成 "invalid function blog/thanks" 错误。

我尝试通过 Web2Py 管理界面删除已编译的应用程序,然后重新编译所有内容。仍然不起作用。我为 "Thanks" 页面添加了一个 "view",但这并没有改变任何东西。我重新启动了 Web2Py 框架和 Web 服务器,但仍然没有成功。 一些网站提到了一个可能的 routes.py 问题,但我很困惑为什么这会是相关的。

请帮忙, 我在这里碰壁了。

当您只将一个参数传递给 URL() 帮助器时,它假定参数是函数名称并且控制器是当前控制器。由于当前控制器是blogURL('thanks')将生成以下URL:/yourapp/blog/thanks.

据推测,您的 thanks 函数在不同的控制器中(可能 default.py),在这种情况下,对上述 URL 的请求将生成您观察到的错误。只需将 URL 更改为 URL('default', 'thanks')

因此,在调整了一些东西并删除了所有编译文件并再次从头开始之后,结果证明解决方案比我尝试的要简单得多。 我只是在前面提到的 blog.py 控制器中定义了一个名为 thanks 的函数,并返回局部变量,如下所示:

def thanks():
    return locals()

然后我添加了一个 blog/thanks view 文件,有一个基本的 html header ,说明:

Thank you for submitting the form!

它最终将 display_form 博客页面重定向到 thanks 页面,从而闪烁 表单已接受 消息(也符合预期)。

感谢你的帮助,安东尼! 干杯。