Flask + Python中如何实现php中的header('Refresh: 1;url=destination')?

2 投票
1 回答
1104 浏览
提问于 2025-04-20 05:40

在PHP中,有一个功能

header('Refresh: 1;url=destination');

它可以把用户重定向到一个指定的URL。而且这个功能必须在其他任何操作之前调用,但我可以在那行之后显示其他内容。

而在我正在练习的Flask + Python中,有一个功能

return redirect(destination, code=301)

它也可以进行重定向,但不能像PHP那样在重定向后再显示其他内容。

如果我没记错的话,这两个功能都会发送一个头信息,告诉用户去另一个地方,但它们的表现方式不同:在第一个情况下,它是在提供响应的时候发送的;而在第二个情况下,它就是响应本身。

我希望在Flask中能有和PHP一样的功能,但看完文档后,我觉得没有办法同时发送重定向和一些内容。

1 个回答

4

所有的 header() 函数做的就是给响应添加一个 HTTP 头信息。在 Flask 中你也可以做到这一点。

你可以返回一个包含 (body, status, headers) 的元组,或者返回一个 flask.Response() 对象。具体可以查看快速入门中的 关于响应 部分。

下面是一个包含主体、状态和头信息的元组示例:

body = render_template('sometemplate', somevar=somevalue)
return (body, 200, {'Refresh': '1;url=destination'})

在这里,第二个元素设置了一个 200 状态码(表示成功),第三个元素是一个字典,用来指定 Refresh 头信息。

撰写回答