【发布时间】:2020-11-04 08:23:50
【问题描述】:
如何在不更改 URL 的情况下在 Flask 中重定向?我已经寻找了一段时间,但没有找到好的解决方案。 .htaccess 和 nginx 还有其他线程,但不适用于这种情况
我唯一的解决办法是:
# url_root is currently http://127.0.0.1:5000/
# args = t/Some%20text?p=preset
res = requests.get(request.url_root + args)
return res.text, res.status_code, res.headers.items()
它本质上只是访问 url,然后复制数据并发送它。虽然这确实有效,但速度很慢,在本地服务器上等待时间约为 300-400 毫秒。
我觉得必须有某种方法来重新路由请求,但我找不到它。
编辑:我不是在寻找基本的 Flask 代理,因为它与我已经在做的事情相同。它包含我想要避免的相同瓶颈。我想要一些可以在 Flask 中调用不同页面的东西。
【问题讨论】:
-
这能回答你的问题吗? Proxying to another web service with Flask
-
不,据我所知。您发送的链接基本上与我已经找到的相同。我想要在 Flask 中重新路由的东西,而不是发出 GET 请求,等待它完成,然后发送数据。
-
flask 不是为此而创建的 - 而是用于生成页面。通常你应该用 nginx/apache 运行它,它应该重定向它(甚至是服务器静态文件),因为它使它更快。但即使是 nginx/apache 也必须像在您的代码中一样读取并发送它。顺便说一句,如果这是同一应用程序中的 url,则不要使用
requests,而是直接运行生成此页面的函数。 -
顺便说一句:我不知道这是否适合您,但您可以发送带有
<iframe>的 HTML 以加载其他页面 - 然后您仍然拥有相同的 url,但浏览器直接从其他页面读取服务器。 -
furas,你有一个例子说明如何从另一个函数中调用函数(如果可能的话,包括参数)?因为这听起来正是我想要的。
标签: python python-3.x flask get