【问题标题】:Web2py redirect with a callback function带有回调函数的 Web2py 重定向
【发布时间】:2017-07-13 10:09:11
【问题描述】:

我创建了一个重定向 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 {}>

我知道我遗漏了一些非常简单的东西,我就是无法理解进展顺利。

有什么建议吗?

【问题讨论】:

    标签: spotify web2py


    【解决方案1】:

    您误解了 web2py 的工作原理。 web2py URL 的格式为/application/controller/function.extension。当 web2py 收到请求时,它会查找 URL 中指定的控制器和函数,然后调用该函数。如果函数返回一个字典,那么它会查找关联的视图,如果视图存在,它会执行视图(将函数返回的字典中的值传递给它)并将结果响应返回给浏览器。 URL 中的扩展名仅用于标识特定视图——它是可选的,默认为“html”。如果您阅读文档可能会有所帮助——尤其是查看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 视图并将结果内容返回给浏览器。如果这不是您所需要的,那么您可能应该发布一个新问题来解释您要实现的目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多