Intento crear una aplicación simple pero no trivial con Flask y sigo encontrándome con una situación que no se explica bien en los documentos.Estructura de las aplicaciones del matraz
Me gustaría que mi aplicación para ser dividido entre los diferentes módulos, pero parece que es difícil acceder al app
objeto principal (o db
de flask-sqlalchemy
) desde cualquier otro lugar que el módulo principal. Parece que realmente tiene que escribir su propia forma de tratarlo como un mundo al que todo tiene acceso, lo que requiere un código cuestionable y un poco de tiempo.
Ambos app
y db
se crean en el nivel donde se crea una instancia de la aplicación principal y cada ejemplo supone que están disponibles en el nivel superior. Pero si divido diferentes manejadores de url en diferentes módulos, pierdo la capacidad de usar el decorador @app.route
. Puedo solucionarlo con app.add_url_rule('/...', some.module...)
, pero de nuevo, la aplicación no se pasa a esa función.
Lo mismo ocurre con el db
- No sé si debería pegarlo en g
, o hacerlo accesible a través de app
de alguna manera. Sin embargo, hacer eso no me ayuda a mover los modelos a un módulo aparte: ¿cómo se supone que debo acceder al db
cuando los importo? Todos los ejemplos asumen de nuevo que solo está disponible como una variable local.
¿Me falta algo obvio, o estoy tratando de usar el matraz para la tarea incorrecta aquí?
Los decoradores son solo envoltorios de funciones. Puede hacer una clase que encapsule toda la lógica del servidor y almacene todas las variables 'db' y' app' dentro de la clase. – Blender
@Blender Claro, hay muchas maneras de resolver esto a mano. Lo que realmente quiero averiguar es si hay alguna forma estándar de manejarlo y si parece que falta por completo en los documentos, ¿hay más sorpresas en el camino? Esperaba una solución más obvia del matraz presentado en alguna parte. – viraptor
Puede utilizar Blueprint – user956424