在 Pyramid 中,通过 GET 发送请求可以通过创建 URL 来完成,如下所示:
@view_config(route_name="test")
def test(request):
return HTTPFound("http://test.com/redirect_to_another_test?a=1")
但似乎HTTPFound
不能通过 POST 做到这一点,那我该怎么做呢?有人对此有想法吗?谢谢!
在 Pyramid 中,通过 GET 发送请求可以通过创建 URL 来完成,如下所示:
@view_config(route_name="test")
def test(request):
return HTTPFound("http://test.com/redirect_to_another_test?a=1")
但似乎HTTPFound
不能通过 POST 做到这一点,那我该怎么做呢?有人对此有想法吗?谢谢!
您不能在 Pyramid 或任何其他服务器端框架或语言中执行此操作。
您的示例代码未显示表单提交,代码显示的是 HTTP 重定向。它指示浏览器访问另一个 URL,或者换句话说,告诉浏览器重新提交请求。
这个 Stack Overflow 问题讨论了同样的概念,尽管在 ASP 中不是 Python - Response.Redirect with POST 而不是 Get?
如果您要通过 GET 或 POST 在 Pyramid 中“提交请求”,则必须使用类似 、 或类似的urllib2
库requests
。在这些情况下,库将让 Pyramid 服务器充当请求的“提交者”。
如果你想让用户/网络浏览器通过 POST 提交请求,你必须做一些花哨的步法/诡计来让浏览器做到这一点。
实现这一目标的可能方法包括:
您不能用任何服务器端语言告诉浏览器通过 POST 重新提交请求。浏览器不是那样工作的。
您还应该知道,“大多数浏览器”通常会解释通过 GET 获取的任何重定向请求——即使原始请求是 POST。这不是规范 - 某些重定向代码应该保留一个 POST 一个 POST - 但是浏览器并不遵循所有规范。也没有 HTTP 状态代码或命令可以有目的地从 GET 切换到 POST 。