wake-up-neo.net

Weiterleitung zur URL in Flask

Ich bin neu in Python und Flask und ich versuche das Äquivalent von Response.redirect wie in C # - dh: Weiterleiten an eine bestimmte URL - wie gehe ich vor?

Hier ist mein Code:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __== '__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)
183
iJade

Sie müssen eine Weiterleitung zurücksenden:

import os
from flask import Flask,redirect

app = Flask(__name__)

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

if __== '__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)

Siehe die Dokumentation zu flask docs. Der Standardwert für Code ist 302, also code=302 kann weggelassen oder durch einen anderen Umleitungscode ersetzt werden (einer von 301, 302, 303, 305 und 307).

289
Xavier Combelle
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect(url_for('foo'))

@app.route('/foo')
def foo():
    return 'Hello Foo!'

if __== '__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)

Schauen Sie sich das Beispiel in der Dokumentation an .

80
soerface

Aus der Flask API Documentation (v. 0.10):

kolben. Weiterleiten (location, code=302, Response=None)

Gibt ein Antwortobjekt (eine WSGI-Anwendung) zurück, das den Client beim Aufruf an den Zielspeicherort umleitet. Unterstützte Codes sind 301, 302, 303, 305 und 307. 300 wird nicht unterstützt, da es sich nicht um eine echte Umleitung handelt, und 304, weil es die Antwort auf eine Anfrage mit einer Anfrage mit definierten If-Modified-Since-Headern ist.

Neu in Version 0.6: Der Speicherort kann jetzt eine Unicode-Zeichenfolge sein, die mit der Funktion iri_to_uri () codiert wird.

Parameter:

  • location - Der Ort, an den die Antwort umleiten soll.
  • code - Der Umleitungsstatuscode. Der Standardwert ist 302.
  • Response (Klasse) - Eine Antwortklasse, die beim Instanziieren einer Antwort verwendet werden soll. Die Standardeinstellung lautet werkzeug.wrappers.Response, falls nicht angegeben.
38
ford

Ich glaube, dass diese Frage eine Aktualisierung verdient: Schauen Sie sich einfach die anderen Ansätze an und führen Sie die Vergleiche durch.

So leiten Sie (3xx) in Flask (0.12.2)) von einer URL zur anderen um:

#!/usr/bin/env python

from flask import Flask, redirect

app = Flask(__name__)

@app.route("/")
def index():
    return redirect('/you_were_redirected')

@app.route("/you_were_redirected")
def redirected():
    return "You were redirected. Congrats :)!"

if __== "__main__":
    app.run(Host="0.0.0.0",port=8000,debug=True)

Für andere offizielle Referenzen hier .

11
ivanleoncz
flask.redirect(location, code=302)

Dokumente finden Sie hier .

4
der_fenix

Dazu können Sie einfach die Funktion redirect verwenden, die in flask enthalten ist.

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect("www.exampleURL.com")

if __== "__main__":
    app.run()

Ein weiterer nützlicher Tipp (wenn Sie neu in der Flasche sind) ist das Hinzufügen von app.debug = True nachdem das flask object als Debugger-Ausgabe initialisiert wurde, hilft es sehr, herauszufinden, was falsch ist.

0
Manan Gouhari

Flask enthält die Funktion redirect zum Weiterleiten an eine beliebige URL. Außerdem können Sie eine Anfrage mit einem Fehlercode mit abort vorzeitig abbrechen:

from flask import abort, Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect(url_for('hello'))

@app.route('/hello'):
def world:
    abort(401)

Standardmäßig wird für jeden Fehlercode eine schwarzweiße Fehlerseite angezeigt.

Die Methode redirect verwendet standardmäßig den Code 302. Eine Liste für http-Statuscodes hier .

0
yoelvis