2014-12-23 4 views
1

플라스크에서 서버 측 폼 작업을 에뮬레이트하려고합니다. 나는 포스트 조치를하고 lib에는 요청을 사용하여 축복하는 :플라스크 서버 측 폼 POST

@flask_app.route('/hello',methods=['GET','POST']) 
def hello(): 
    r = requests.post(    
      "https://somesite.hello" 
      , data= {'user': 'bill','pass': 123}) 
    return r.text        
    #return redirect("https://somesite.hello") 

그리고 일입니다. 그러나 html로 실제 형식을 게시 할 때도 리디렉션을 수행합니다. # 1 URL은 http://mysite.hello:5000/hello이 될 것입니다.하지만 # 1에서 콘스탄트가 필요하지만 # 2에서 URL이 필요합니다. https://somesite.hello 동시에 1과 2를 수행하는 방법은 무엇입니까? 고맙습니다!

UPD : 나는 몇 가지 해결책을 발견

, 난 정말, 그것은 같은 사용자가 두 번째 페이지의 "결제 페이지로 재 지정"을 참조되기 때문에. 누군가가 요청을하고 리디렉션하여 결과를 얻는 방법을 알고있을 수 있습니까?

@flask_app.route('/hello',methods=['GET','POST']) 
def hello(): 
    url = "https://somesite.hello" 
    return flask_app.make_response(""" 
    <html> 
     <body onload='document.forms[0].submit()'> 
      Redirecting to billing page... 
      <form action='%s' method='post'> 
       <input type='hidden' name='user' value='%s'> 
       <input type='hidden' name='pass' value='%s'> 
      </form> 
     </body> 
    </html> 
    """%(url 
     ,'bill' 
     ,123)) 
+0

이것은 도움이 될 수 있습니다 : http://stackoverflow.com/questions/17057191/flask-redirect-while-passing-arguments – azalea

+0

그러면 r.text를 어떻게 사용할 것입니까? – azalea

+0

플라스크 앱이 청구 사이트와 통신 중입니다. 주문을하려면 firts html 양식을 일부 데이터 (shop_id, pass_id, 기호)로 만들어야하고, 제출 버튼을 누르면 (이는 플라스크로 수행하려고하는 게시 조치입니다) 리디렉션은 초 양식에 일어났습니다. 카드 정보를 작성하고 지불하도록 제출할 수 있습니다. 나는 단 한 걸음만으로 그것을 시도한다. 이 r.text는 청구 사이트의 두 번째 양식이지만 windows.location은 내 사이트입니다. 나는 창문을 바꿀 줄을 모른다. 플라스크로 위치를 바꾼다. jscript의 유일한 방법 은요? –

답변

1

간단하게 리디렉션을 따르고 다음 페이지에 자신의 리디렉션을 발행하지 않습니다

r = requests.post('some.url', data={'some': 'data'}, allow_redirects=False) 
return redirect(r.headers['location']) 

우리는 양식 데이터를 제출하지만, 요청 리디렉션을 수행하지 않습니다. 대신 리디렉션을 최종 사용자에게 전달합니다. 그러나 지불 프로세서가 some.url이 요청에 대해 설정 한 쿠키가 some.url에 전달 될 수 없으므로 지불 프로세서가 쿠키를 사용하여 상태를 유지하는 경우 (가장 가능성이 높음) 작동하지 않습니다.

+0

답변 해 주셔서 감사합니다.하지만 청구서와 함께 작동하지 않습니다. 왜 그런지 정확히 모르겠습니다. 나는 하나의 해결책을 발견했다, 나는 그것을 여기 게시 할 것이지만, 그것은 속임수와 더 비슷하다. –