decision confusion 3x3 python flask

confusion - subplot title python



ConfusiĆ³n matraz con aplicaciĆ³n (3)

Creo que la principal confusión está en la línea:

from app import app

Tienes un paquete de python (una carpeta con el archivo __init__.py ) llamado "aplicación". Desde esta carpeta, ahora está importando la variable "aplicación" que definió a continuación en el archivo __init__.py :

app = Flask(__name__)

Cambie el nombre de la carpeta de la aplicación para que diga "myproject". Entonces llamaras

from myproject import app

Además, importará vistas como

from myproject import views

Estoy empezando un proyecto de flask , y en mi código tengo

from flask import Flask, render_template, abort app = Flask(__name__)

Ahora, ¿qué es exactamente la app ?

Estoy siguiendo esta guía y estoy particularmente confundido acerca de la estructura porque él ha elegido tener el directorio llamado app/ y es su app/__init__.py que tiene

from flask import Flask app = Flask(__name__) from app import views

y en su app/views.py tiene

from app import app

¡¿Qué demonios pasa con todas estas app ?!


El autor hizo su código innecesariamente confuso al elegir un nombre de paquete que es el mismo que el nombre de instancia de objeto de aplicación habitual de Flask. Este es el que más te interesará:

app = Flask(__name__)

Aquí está la documentación sobre el objeto de aplicación Flask:

http://flask.pocoo.org/docs/api/#application-object

Para evitar confusiones, recomiendo usar la documentación oficial de Flask en lugar de esa guía.


Eso es un poco confuso, debido a la mala elección de los nombres.

  • app = Flask(__name__) : aquí la app es una aplicación WSGI , implementa la interfaz correspondiente y también es compatible con todo lo que Flask tiene para ofrecernos.
  • from app import app : importa exactamente el objeto de la app desde la app paquete.
  • from app import view : para qué diablos está importando views allí, es un poco misterioso, supongo que quiere asegurarse de que se ejecutan los enlaces de vista. (Prefiero hacerlo en run.py ). En cualquier caso, es un tipo de bucle de importación entre dos módulos que también es al menos confuso.