2017-11-02 3 views
0

Ich bin neu in Flask. Und ich versuche, den Benutzer zu einer "Erfolg" -Seite umzuleiten, wo er die CSV-Datei herunterladen kann, die mein Programm für ihn erstellt hat.Flask - Redirect zu einer "Erfolg" Seite

so meine server.py wie folgt aussehen:

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) 

meine process.py wo die JSON, die ich in eine CSV-Datei umgewandelt und Transkripte empfangen wird, wie folgt aussehen:

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

"Antwort" ist immer wahr, aber keine Weiterleitung, was mache ich falsch?

+0

Ich sehe keine Handler für die 'Erfolg'- und' Fail'-Routen. –

+0

@LuisOrduz für die Ansichten, die ich benutze reagieren, wie kann ich diese Handler erstellen? – drl8

Antwort

3

Angenommen, Sie haben Handler für die Routen /success und /fail, können Sie url_for verwenden.

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) 

Schreiben Sie keine URLs zu anderen Routen Ihrer Flaschenanwendung fest. Dies kann zu Ihrem Fall führen, wenn Ihr Server auf Port 5050 läuft und Ihre URLs auf Port 8080 zielen.

+0

Ich ziele auf Port 8080, weil ich react für meine Front verwende und diese react App läuft auf localhost: 8080. Wie kann ich die Handler erstellen, die ich brauche? – drl8

Verwandte Themen