【问题标题】:Flask Redirect New Tab烧瓶重定向新标签
【发布时间】:2013-10-08 06:38:41
【问题描述】:

有谁知道烧瓶重定向是否能够在新标签页中打开链接/网址?

@app.route('/test')
def my_page():

  return redirect('http://mylink.com', 301)

我想如果 mylink 网站在新标签页中打开,有什么见解吗?

【问题讨论】:

  • 我认为让 HTML 中的链接打开一个指向/test 的新选项卡然后让它重定向是最简单的,比如<a href="http://www.example.com/test" target="_blank" >New Tab Link</a>。如果有人直接导航到/test,您是否有理由希望他们打开一个新标签?
  • 当用户访问 /test 并执行 POST 请求时,python 函数实际上会创建链接,我希望将用户发送到创建的链接并在新选项卡中打开它。我希望这是有道理的。

标签: python flask


【解决方案1】:

对@garettmd 稍作调整以解决@John Jiang 的问题:

import webbrowser
from flask import Flask, redirect, url_for

@app.route("/test/")
def test():
    webbrowser.open("https://google.com")
    return redirect(url_for("index"))

这样我们就可以返回一个重定向(无论如何我们都应该这样做),并且我们还可以得到没有“视图函数没有返回有效响应”错误的新标签。

【讨论】:

  • 这对我不起作用。我有一个新的谷歌标签,但我的重定向仍然加载在上一页中。
【解决方案2】:

如果你处理的是form,你可以设置target="_blank"

【讨论】:

    【解决方案3】:

    如果您不想进入 HTML,也可以使用 Python 的 webbrowser 模块打开页面

    import webbrowser
    
    @app.route('/test')
    def my_page():
        return webbrowser.open_new_tab('http://mylink.com')
    

    【讨论】:

    • 是否有人愿意评论为什么从 Flask 中打开新标签页是个坏主意?
    • 如果您将项目上传到 Apache WSGI 服务器,这种方式不起作用。
    • 不太好用,得到“视图函数没有返回有效响应。”错误。
    • @JohnJiang 较新版本的 Flask 要求您在响应中使用 return 某些内容。我已经更新了答案以反映这一点。
    • 这种方法的问题是新选项卡在服务器计算机上打开,而不是在客户端(我实际访问站点的计算机)上打开。有什么解决办法吗?
    【解决方案4】:

    据我所知,这不是烧瓶问题。您必须在 html codeJavascript 中打开一个新标签。

    示例: <a href="http://mylink.com" target="_blank">Link</a>

    在这种情况下,服务器无法控制浏览器所做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2013-06-21
      • 2017-05-11
      相关资源
      最近更新 更多