2014-11-13 5 views
2

나는 폼 데이터 전에 나는이 양식을 제출할 수 있습니다매개 변수 및 POST 메서드를 사용하여 외부 URL로 리디렉션하는 방법은 무엇입니까?

<form action="" method="POST"> 
    <input type="hidden" name="PAYEE_ACCOUNT" value="U1234567"> 
    <input type="hidden" name="PAYEE_NAME" value="Name"> 
    <input type="text" name="PAYMENT_AMOUNT"> 
    <input type="submit" name="PAYMENT_METHOD" /> 
</form> 

플라스크에 액션 URL로 제출 저장하려면,하지만 난 폼 데이터 이전에 제출 저장하려는

보기 :

@mod.route('/payment/', methods=['GET', 'POST']) 
def payment(): 
    if request.method != "POST": 
     return render_template('form.html') 

    form = request.form 

    form_data = {'PAYEE_ACCOUNT': form['PAYEE_ACCOUNT'], 
       'PAYEE_NAME': form['PAYEE_Name'], 
       'PAYMENT_AMOUNT' : form['PAYMENT_AMOUNT'] 
       } 

    # Save Data 

    import urllib 
    params = urllib.urlencode(form_data) 

    url = 'http://www.example.com' 
    return redirect(url, params) 

것은 도와주세요 나

+1

데이터를 어디에 저장 하시겠습니까? 사용자의 컴퓨터에서? –

+0

아니요, 서버에 데이터를 저장했습니다. 매개 변수가있는 url로 리디렉션하고 싶은 경우 –

답변

0

나는 서버 자바 스크립트 코드에

먼저 자바 스크립트

, Sendeding 데이터를 사용하여이 문제를 해결했습니다 , 데이터 저장 및 결과 반환 코드보기 :

@mod.route('/save_transaction', methods=['GET', 'POST']) 
def save_transaction(): 
    follow_num = request.args.get('PAYMENT_ID') 
    amount = request.args.get('PAYMENT_AMOUNT') 
    memo = request.args.get('SUGGESTED_MEMO') 

    #Save Data 

    return jsonify(result='ok') 
0

flask.redirect를 사용해야합니다.

flask.redirect (위치, 코드 = 302)

반환 응답 객체 (WSGI 애플리케이션) 즉, 호출되면 대상 위치에 클라이언트를 리디렉션. 지원되는 코드는 301, 302, 303, 305 및 307입니다. 실제 리디렉션이 아니기 때문에 300이 지원되지 않으며 정의 된 If-Modified-Since 헤더가있는 요청이있는 요청에 대한 응답이기 때문에 300이 지원되지 않습니다.

매개 변수 :
위치 - 응답이 리디렉션되어야하는 위치입니다. 코드 - 리디렉션 상태 코드입니다. (302)

샘플 코드 기본값 :

import os 
from flask import Flask,redirect 

app = Flask(__name__) 

@app.route('/') 
def hello(): 
    return redirect("http://www.example.com", code=302) 

if __name__ == '__main__': 
    # Bind to PORT if defined, otherwise default to 5000. 
    port = int(os.environ.get('PORT', 5000)) 
    app.run(host='0.0.0.0', port=port) 

the documentation on flask docs를 참조하십시오.

+0

매개 변수 및 메서드를 리디렉션하는 방법은 무엇입니까? –

7

302 대신 307 상태 코드를 보내면 브라우저에 사용 된 HTTP 메소드를 보존해야하므로 예상 한 동작을 유지해야합니다. 리디렉션 통화는 다음과 같을 것이다 : 그런 다음

<script type="text/javascript"> 
    var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; 

    $(function() { 
    $('#PAYMENT_METHOD').bind('click', function() { 
     $.getJSON($SCRIPT_ROOT +'/credit/save_transaction', { 
     PAYMENT_ID: $('input[name="PAYMENT_ID"]').val(), 
     PAYMENT_AMOUNT: $('input[name="PAYMENT_AMOUNT"]').val(), 
     SUGGESTED_MEMO: $('input[name="SUGGESTED_MEMO"]').val() 
     }, function(data) { 
     if (data.result == 'ok') { 
      $('#form_payment').submit(); 
     } 
     }); 
     return false; 
    }); 
    }); 
</script> 

:

@mod.route('/payment/', methods=['GET', 'POST']) 
def payment(): 
    if request.method != "POST": 
     return render_template('form.html') 

    form = request.form 

    form_data = {'PAYEE_ACCOUNT': form['PAYEE_ACCOUNT'], 
       'PAYEE_NAME': form['PAYEE_Name'], 
       'PAYMENT_AMOUNT' : form['PAYMENT_AMOUNT'] 
       } 

    # Save Data 

    url = 'http://www.example.com' 
    return redirect(url, code=307)