Отправка 2 форм одновременно - PullRequest
0 голосов
/ 11 января 2012

Я должен отправить две формы одновременно, и я не хочу 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 ]

2 голосов
/ 11 января 2012

Вы можете использовать 307 для перенаправления, что сохраняет все параметры POST (вам нужно убедиться, что параметры POST, используемые вашим сервлетом, совпадают с параметрами, используемыми вашим удаленным сервером).

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

Однако не все браузеры поддерживают 307 правильно. Смотрите здесь: Response.Redirect с POST вместо Get?

Этот ответ старый, поэтому, возможно, больше браузеров теперь правильно обрабатывают 307.

2 голосов
/ 11 января 2012

Есть что-то, что вы можете сделать следующим образом:

Получить форму для публикации, сделать что-то на вашем сервере, а затем вернуть страницу перенаправления , которая содержит форму с такими же параметрами, но действиемк удаленной цели.

Затем вы можете использовать маленькие js для автоматической отправки формы и дать пользователю что-то вроде " Not redirecting? click here ".

Так что он работает не так, как вы ожидали, и тоже использовал js, но я не нашел лучшего способа справиться с этой работой.Надеюсь, что это может помочь в любом случае.

...