使用回调函数进行Web2py重定向

时间:2017-07-13 10:09:11

标签: spotify web2py

我创建了一个重定向URI,以帮助我使用Spotify api连接我的应用程序。我使用了here

提供的说明

我在我的默认控制器中创建了一个回调函数,它应该导致重定向URI,我存储为views / default / callback.html的html文件

这是我的默认控制器中的代码的外观:

def callback():
    redirect(URL('callback.html'))

我将javascript中的返回URI设置为http://127.0.0.1:8000/uno/default/callback

调用回调时,我已成功重定向到http://127.0.0.1:8000/uno/default/callback.html

我认为是我的视图(来自views / default / callback.html)所在的位置。但是,回调页面根本没有呈现。相反,我为URL重定向收到303错误。 web2py控制台的信息量不大。它只是说INFO:uno:====> Request: 'GET' '/uno/default/callback.html' [] <Storage {}>

我知道我错过了一些非常简单的事情,而我却无法理解它的进展情况。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您误解了web2py的工作原理。 web2py网址的格式为/application/controller/function.extension。当web2py收到请求时,它会查找URL中指定的控制器和函数,然后调用该函数。如果函数返回一个字典,那么它会查找一个关联的视图,如果该视图存在,它将执行视图(将该函数返回的字典中的值传递给它)并将结果响应返回给浏览器。 URL中的扩展名仅用于标识特定视图 - 它是可选的,默认为&#34; html&#34;。如果您阅读文档可能会有所帮助 - 特别是查看herehere

您的callback()功能重定向到/uno/default/callback.html。但是,这只是调用相同的功能。初始/uno/default/callback和后续/uno/default/callback.html之间的唯一区别是后者明确指定视图应具有.html扩展名,而前者只是默认为.html延期。由于callback()函数永远不会返回字典,因此永远不会执行视图。相反,您输入一个无限循环的重定向回到同一个函数。

相反,您的回调函数应该类似于:

def callback():
    return dict()

在这种情况下,当请求/uno/default/callback URL时,web2py将执行callback.html视图并将结果内容返回给浏览器。如果那不是您所需要的,那么您应该发布一个新问题来解释您想要实现的目标。