Web2Py错误:无效功能博客/谢谢

时间:2015-12-10 03:29:05

标签: python web2py debian-based

我正在使用Debian Linux上的Web2Py构建一个简单的博客。 我有一个名为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”博客页面,它成功接受了所有输入,但它没有重定向到谢谢页面。相反,浏览器生成“无效功能博客/谢谢”错误。

我尝试通过Web2Py管理界面删除已编译的应用程序,并重新编译所有内容。仍然无法正常工作。我为“Thanks”页面添加了一个“视图”,但这并没有改变任何东西。我重新启动了Web2Py框架和Web服务器,但仍然没有去。 有些网站提到了一个可能的routes.py问题,但是我很困惑为什么这个问题是完全相关的。

请帮忙, 我在这里打砖墙。

2 个答案:

答案 0 :(得分:3)

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

def thanks():
    return locals()

然后我添加了博客/感谢 视图文件,其中包含一个基本的html标题,说明:

Thank you for submitting the form!

它最终将 display_form 博客页面重定向到感谢页面,从而闪烁表单已接受消息(同样如预期)

谢谢你的帮助,安东尼! 欢呼声。

答案 1 :(得分:0)

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

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

即可