Omleiden naar URL in Flask

Ik ben nieuw bij Python en Flask en ik probeer het equivalent van Response.redirectte doen zoals in C# – dat wil zeggen: omleiden naar een specifieke URL – hoe pak ik dit aan?

Hier is mijn code:

import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello World!'
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)

Antwoord 1, autoriteit 100%

Je moet een omleiding retourneren:

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)

Zie de documentatie over kolfdocumenten.De standaardwaarde voor code is 302 dus code=302kan worden weggelaten of vervangen door een andere omleidingscode (één op 301, 302, 303, 305 en 307).


Antwoord 2, autoriteit 26%

#!/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 __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)

Bekijk het voorbeeld in de documentatie.


Antwoord 3, autoriteit 10%

Van de Flask API-documentatie(v. 2.0.x):

flask.omleiding(location, code=302, Response=None)

Retourneert een responsobject (een WSGI-toepassing) dat, indien aangeroepen, de client omleidt naar de doellocatie. Ondersteunde codes zijn 301, 302, 303, 305 en 307. 300 wordt niet ondersteund omdat het geen echte omleiding is en 304 omdat het het antwoord is op een verzoek met een verzoek met gedefinieerde If-Modified-Since-headers.

Nieuw in versie 0.6: de locatie kan nu een unicode-tekenreeks zijn die:
gecodeerd met behulp van de iri_to_uri() functie.

Parameters:

  • location– de locatie waarnaar het antwoord moet worden omgeleid.
  • code– de omleidingsstatuscode. standaard ingesteld op 302.
  • Response(klasse) – een Reactieklasse die moet worden gebruikt bij het instantiëren van een reactie. De standaardwaarde is werkzeug.wrappers.Response indien niet gespecificeerd.

Antwoord 4, autoriteit 4%

Ik geloof dat deze vraag een update verdient. Vergelijk het maar met andere benaderingen.

Zo doet u omleiding (3xx) van de ene url naar de andere in Flask (0.12.2):

#!/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 __name__ == "__main__":
    app.run(host="0.0.0.0",port=8000,debug=True)

Voor andere officiële referenties, hier.


Antwoord 5, autoriteit 2%

Flask bevat de functie redirectvoor het omleiden naar een url. Bovendien kun je een verzoek vroegtijdig afbreken met een foutcode met abort:

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)

Standaard wordt er voor elke foutcode een zwart-wit foutpagina weergegeven.

De redirect-methode gebruikt standaard de code 302. Een lijst voor http-statuscodes hier.


Antwoord 6, autoriteit 2%

flask.redirect(location, code=302)

Documenten zijn hierte vinden.


Antwoord 7

Hiervoor kunt u eenvoudig de functie redirectgebruiken die is opgenomen in flask

from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def hello():
    return redirect("https://www.exampleURL.com", code = 302)
if __name__ == "__main__":
    app.run()

Een andere handige tip (aangezien je nog niet bekend bent met flask), is om app.debug = Truetoe te voegen na het initialiseren van het flask-object, aangezien de uitvoer van de debugger veel helpt bij het uitzoeken wat er mis is.


Antwoord 8

het is vrij eenvoudig als je gewoon wilt omleiden naar een url zonder statuscodes of iets dergelijks, kun je eenvoudig zeggen

from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def redirect_to_link():
    # return redirect method, NOTE: replace google.com with the link u want
    return redirect('https://google.com')

hier is de link naar de Flask-documenten voor meer uitleg


Antwoord 9

U kunt als volgt gebruiken:

import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
     # Redirect from here, replace your custom site url "www.google.com"
    return redirect("https://www.google.com", code=200)
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)

Hier is de link waarnaar wordt verwezen naar deze code.

Other episodes