Redirigir a URL en Flask

Resuelto iJade asked hace 11 años • 11 respuestas

Estoy intentando hacer el equivalente Response.redirecta C#, es decir, redirigir a una URL específica. ¿Cómo hago esto?

Aquí está mi código:

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)
iJade avatar Jan 16 '13 00:01 iJade
Aceptado

Tienes que devolver una redirección:

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)

El valor predeterminado para el código es 302, por lo que code=302se puede omitir o reemplazar por otro código de redireccionamiento (uno en 301, 302, 303, 305 y 307).

Consulte la documentación sobre flask docs.

Xavier Combelle avatar Jan 15 '2013 18:01 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 __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)

Eche un vistazo al ejemplo en la documentación .

soerface avatar Jan 15 '2013 18:01 soerface

De la documentación de Flask API (v. 2.0.x):

matraz. redireccionar ( location, code=302, Response=None)

Devuelve un objeto de respuesta (una aplicación WSGI) que, si se llama, redirige al cliente a la ubicación de destino. Los códigos admitidos son 301, 302, 303, 305 y 307. 300 no se admite porque no es una redirección real y 304 porque es la respuesta a una solicitud con encabezados If-Modified-Since definidos.

Nuevo en la versión 0.6 : la ubicación ahora puede ser una cadena Unicode codificada usando la función iri_to_uri().

Parámetros:

  • location– la ubicación a la que debe redirigir la respuesta.
  • code– el código de estado de redirección. El valor predeterminado es 302.
  • Response(clase): una clase de respuesta que se utiliza al crear una instancia de una respuesta. El valor predeterminado es werkzeug.wrappers.Response si no se especifica.
ford avatar Jan 15 '2013 18:01 ford