一次提交2份表格

时间:2012-01-11 11:48:37

标签: python forms google-app-engine python-2.7

我必须一次提交两个表单,我不想要javascript。所以我想我可以将表格发布给自己,做我的工作然后发布到第三方支付提供商。这是为了使订单显示在我们的数据存储区中。该手册说明了如何通过HTTP POST提交表单,但我不知道如何将用户的浏览器指向此页面。有办法吗?而不是直接将表格发布到第三方,我想这样做:

  def post(self):
     import urllib
     #do my work
     params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
     f = urllib.urlopen("http://www.thirdparty.com/cgi-bin/query", params)
     #direct the user to the reponse page but how?

提交表单是有效的,但用户必须带到页面。有没有办法实现这个目标?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

你可以这样做:

获取帖子表单,在您的服务器上执行操作,然后返回重定向页面,其中包含具有相同参数的表单,但对远程目标执行操作。

然后,您可以使用小js自动提交表单,并向用户提供“不重定向?点击此处”等内容。

所以它不像你期望的那样工作,它也使用了js,但我没有找到更好的方法来处理这个工作。希望这可以以任何方式提供帮助。

答案 1 :(得分:2)

您可以使用307来重定向,这会保留所有POST参数(您需要确保您的servlet使用的POST参数与远程服务器使用的POST参数相同)。

self.response.set_status(307)
self.response.headers['Location'] = "http://www.thirdparty.com/cgi-bin/query"

但是,并非所有浏览器都能正确实现307。见这里:Response.Redirect with POST instead of Get?

这个回复很旧,所以也许更多浏览器现在可以正确处理307。

相关问题