2017-11-02 16 views
0

私はFlaskを初めて利用しています。私は彼が私のプログラムが彼のために作成したcsvファイルをダウンロードできる "成功"ページにユーザーをリダイレクトしようとしています。Flask - 「成功」ページにリダイレクト

ので、私のserver.pyは、次のようになります。私が受け取ったJSONをcsvファイルに変換し、転写産物れ

from flask import Flask, request, abort, redirect 
from flask_cors import cross_origin 
import process 

app = Flask(__name__) 


@app.route('/ind', methods=['POST']) 
@cross_origin(origin='localhost', headers=['Content- Type', 'Authorization']) 
def ind(): 
    if not request.json: 
     abort(400) 
    my_json = request.json 
    reponse = process.process(my_json) 
    if reponse: 
     return redirect("http://localhost:8080/success", code=302) 
    else: 
     return redirect("http://localhost:8080/fail", code=302) 


@app.route('/position', methods=['POST']) 
@cross_origin(origin='localhost', headers=['Content- Type', 'Authorization']) 
def position(): 
    if not request.json: 
     abort(400) 
    my_json = request.json 
    reponse = process.process(my_json) 
    if reponse: 
     return redirect("http://localhost:8080/success", code=302) 
    else: 
     return redirect("http://localhost:8080/fail", code=302) 


if __name__ == '__main__': 
    app.run(host='0.0.0.0', port=5050, debug=True) 

私process.pyを、次のようになります。

def process(my_json): 
     [blablabla...] 
    return True 

"reponse"は常にTrueですがリダイレクトはありません。何が間違っていますか?

+0

'success'と' fail'ルートのハンドラーは表示されません。 –

+0

@LuisOrduz私は反応を使用するビューのために、どうすればこのハンドラを作成できますか? – drl8

答えて

3

ルート/success/failのハンドラがあると仮定すると、url_forを使用できます。

from flask import url_for 

@app.route('/position', methods=['POST']) 
def posistion(): 
    # ... 
    if response: 
     return redirect(url_for('/success'), code=302) 
    return redirect(url_for('/fail'), code=302) 

ごフラスコアプリケーションの他のルートにないハードコードのURLを行います。これは、サーバーがポート5050で実行され、URLがポート8080をターゲットにしている場合にあなたのケースにつながる可能性があります。

+0

私は私の前部に反応を使用し、反応するアプリケーションがlocalhost:8080上で実行されているので、ポート8080をターゲットにしています。私は必要なハンドラをどのように作成できますか? – drl8

関連する問題