Flask Big logo

Aplicaciónes Modulares con Flask

Flask es un micro framework escrito en python que te permite realizar aplicaciones web de forma muy facil, con tan solo unas cuantas lineas ya tienes una aplicación (bien simple).


  from flask import Flask
  app = Flask(__name__)

  @app.route("/")
  def hello():
      return "Hello World!"

  if __name__ == "__main__":
      app.run()

Podríamos tener una aplicación incluso bien compleja en el mismo archivo y todo, pero se convertiría en algo muy grande y difícil de manejar. Para solucionar este requerimiento Flask contiene unos componentes llamados Blueprint.

Los Blueprint no son aplicaciones en el sentido de como Flask maneja las aplicaciones, los blueprints seria como un modulo de nuestra aplicación, en este podríamos tener nuestro propio static folder, template folder entre otras cosas que solo serian podría de ese Blueprint.

Este es la forma de como crear un Blueprint:


    blue = Blueprint('blueprint',__name__)

    #La firma del metodo init de la clase blueprint es este
    __init__(self, name, import_name, 
                static_folder=None, 
                static_url_path=None, 
                template_folder=None, 
                url_prefix=None, 
                subdomain=None, 
                url_defaults=None)

Simple Blueprint registrado a una aplicación.


    import os
    from flask import Flask, session
    from flask import Blueprint


    app = Flask(__name__)

    @app.route('/')
    def index():
          return "Hello nice"


    blue = Blueprint('blueprint',__name__,template_folder='templates')

    @blue.route('/')
    def show():
        return 'Hola blueprint'

    app.register_blueprint(blue, url_prefix='/blue')


    if __name__ == '__main__':
    	    app.run(host="0.0.0.0",port=int("80"),debug=True)

Con esto de los blueprints podríamos tener un arquitectura de proyecto mejor organizada y tener digamos por cada archivo un blueprint y una sola aplicación para registrarlos.

Digamos que tenemos una aplicación de blog, podríamos tener una estructura como la siguiente, donde tenemos nuestro app.py para registrar todos los blueprints (modulos del app) separar la administración del app y el api (Digamos que quieras consumir esa misma info desde varios clientes).


  app_root/
      -->templates
      -->statics
      -->modules
          -->api.py
          -->admin.py
          -->blog.py
          ...
      app.py
      app.conf

Codigo

Ejemplo del Projecto (Vacio)
RunnableProject

Referencias

Flask
BluePrints