python - url_for - send_file flask
Redirigir a URL en Frasco (5)
Soy nuevo en Python y Flask y estoy tratando de hacer el equivalente de Response.redirect
como en C#
, es decir: redireccionar 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)
Creo que esta pregunta merece una actualización: solo eche un vistazo a los otros enfoques y haga las comparaciones.
Así es como se hace 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, here .
De la documentación de Flask API (v. 0.10):
matraz. redirigir (
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 es compatible porque no es una redirección real y 304 porque es la respuesta para una solicitud con 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 con 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. predeterminado a 302.Response
(clase): una clase de respuesta para usar al crear una instancia de una respuesta. El valor predeterminado es werkzeug.wrappers.Response si no se especifica.
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)
ver la documentación en los documentos del matraz .
el valor predeterminado para el código es 302, por lo que el code=302
se puede omitir o reemplazar por otro código de redirección (uno en 301, 302, 303, 305 y 307)
#!/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)
Mire el ejemplo en la documentación .
flask.redirect(location, code=302)
Los documentos se pueden encontrar here .