2012-01-11 5 views
0

나는 한 번에 2 개의 양식을 제출해야하며 나는 자바 스크립트를 원하지 않는다. 그래서 저는 제 자신에게 양식을 게시하고 제 업무를 수행 한 다음 제 3 자 지불 제공자에게 양식을 게시 할 수 있다고 생각합니다. 이는 데이터 스토어에 주문을 표시하는 것입니다. 설명서에 HTTP POST를 통해 양식을 제출하는 방법이 나와 있지만 사용자의 브라우저를이 페이지로 연결하는 방법을 알지 못합니다. 방법이 있습니까?한 번에 2 개의 양식 제출

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? 

그것은 양식을 제출 작동하지만 사용자가 페이지에 걸릴해야합니다 대신 직접 제 3 자에게 양식을 게시의이 같은 일을 생각했다. 이것을 달성 할 수있는 방법이 있습니까? 어떤 도움

덕분에

답변

2

이 같이 할 수있는 일이있다 :

, 서버에 물건을 할 포스트 >> 양식을하고 같은과 양식을 포함하는 리디렉션 페이지를 반환 매개 변수가 아니라 원격 대상에 대한 작업

그런 다음 작은 js를 사용하여 자동으로 양식을 제출하고 "리디렉션하지 않습니까? 여기를 클릭하십시오"과 같은 내용을 사용자에게 제공 할 수 있습니다.

예상 한대로 작동하지 않으며 js도 사용했지만이 작업을 처리하는 데 더 좋은 방법을 찾지 못했습니다. 희망이 어떤 식 으로든 도움이 될 수 있습니다.

+0

나는 그것이 효과가있을 것이라고 생각한다. 모든 것이 paypal과 같은 제 3 자에게 양식을 제출하고 있으며,이를 가로 채어 내 데이터 스토어에 주문을 저장해야합니다. 답변 감사합니다. –

+1

일반적인 방법은 주문을 먼저 작성한 다음 사용자를 주문 요약 페이지 (사용자가 확인/저장/인쇄 할 수 있음)로 리디렉션하고 표준 Paypal 버튼을 그곳에 배치하는 것입니다. –

+0

도움 주셔서 감사합니다. 이제 사용자가 리디렉션 페이지에서 주문을 취소했는지 어떻게 알아야하는지 궁금합니다. 이 일을 정리하는 배치 작업을 할 수는 있지만 타사 공급자와 실제로 배치 된 주문 만 내 데이터 스토어에 기록되는 것이 더 낫습니다. –

2

307을 사용하여 모든 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을 처리 할 수 ​​있습니다.

+0

답변 해 주셔서 감사합니다. –

관련 문제