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()
帮助器时,它假定参数是函数名称并且控制器是当前控制器。由于当前控制器是blog
,URL('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 页面,从而闪烁 表单已接受 消息(也符合预期)。
感谢你的帮助,安东尼!
干杯。
我正在 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()
帮助器时,它假定参数是函数名称并且控制器是当前控制器。由于当前控制器是blog
,URL('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 页面,从而闪烁 表单已接受 消息(也符合预期)。
感谢你的帮助,安东尼! 干杯。