Skip to main content
 首页 » 编程设计

python之如何在 Pyramid 中通过 POST 提交请求

2025年05月04日21sky-heaven

在 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 instead of Get?

如果您要通过 GET 或 POST 在 Pyramid 中“提交请求”,则必须使用像 urllib2、requests 或类似的库。在这些情况下,图书馆会让 Pyramid 服务器充当请求的“提交者”。

如果你想让用户/网络浏览器通过 POST 提交请求,你将不得不做一些花哨的步法/技巧来让浏览器这样做。

实现该目标的可能方法包括:

  • 使用 JavaScript AJAX 表单提交,并通过 JSON 返回错误代码或指令,告诉您的 JavaScript 库通过 POST 重新提交相同的表单。
  • 将用户重定向到已填写表单数据(通过 GET 参数)的 GET 页面,并使用 javascript 通过 POST onload 重新提交表单

您不能用任何服务器端语言告诉浏览器通过 POST 重新提交请求。浏览器不是那样工作的。

您还应该知道,“大多数浏览器”通常会将任何重定向请求解释为通过 GET 获取——即使原始请求是 POST。这不是规范 - 某些重定向代码应该保持 POST POST - 但是浏览器不遵循所有规范。也没有 HTTP 状态代码或命令有目的地从 GET 切换到 POST。