Redireccionando a URL en Flask
Soy nuevo en Python y Flask y estoy tratando de hacer el equivalente de Response.redirect
como en C#
- ie: redirigir a una URL específica - ¿cómo puedo hacer 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)
5 answers
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)
Consulte [la documentación de flask docs](
http://flask.pocoo.org/docs/1.0/api/#flask.redirect ) el valor predeterminado para el código es 302, por lo que code=302
puede omitirse o reemplazarse por otro código de redirección (uno en 301, 302, 303, 305 y 307)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-07 20:52:04
#!/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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-15 18:05:21
De la Documentación de la API Flask (v. 0.10):
Matraz.redirigir(
location
,code=302
,Response=None
)Devuelve un objeto response (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 es compatible porque no es una redirección real y 304 porque es la respuesta para una solicitud con una solicitud con cabeceras If-Modified-Since definidas.
Nuevo en versión 0.6: La ubicación ahora puede ser una cadena unicode que es codificado usando la función iri_to_uri ().
Parámetros:
location
– la ubicación a la que debe redirigirse la respuesta.code
– el código de estado de redirección. por defecto 302.Response
(class) - una clase de respuesta que se usa al instanciar una respuesta. El valor predeterminado es werkzeug.envoltura.Respuesta si no se especifica.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-10 15:52:23
Creo que esta pregunta merece una actualización: basta con echar un vistazo a los otros enfoques y hacer las comparaciones.
Aquí es cómo hacer la redirección (3xx) de una url a otra en 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)
Para otras referencias oficiales, aquí .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-23 02:55:57
flask.redirect(location, code=302)
Los documentos se pueden encontrar aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-19 20:48:06