with url_for send_file current_app before_request app python redirect flask

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 .