我创建了一个重定向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 {}>
我知道我错过了一些非常简单的事情,而我却无法理解它的进展情况。
有什么建议吗?
答案 0 :(得分:0)
您误解了web2py的工作原理。 web2py网址的格式为/application/controller/function.extension
。当web2py收到请求时,它会查找URL中指定的控制器和函数,然后调用该函数。如果函数返回一个字典,那么它会查找一个关联的视图,如果该视图存在,它将执行视图(将该函数返回的字典中的值传递给它)并将结果响应返回给浏览器。 URL中的扩展名仅用于标识特定视图 - 它是可选的,默认为&#34; html&#34;。如果您阅读文档可能会有所帮助 - 特别是查看here和here。
您的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
视图并将结果内容返回给浏览器。如果那不是您所需要的,那么您应该发布一个新问题来解释您想要实现的目标。