Mi aplicación de matraz actualmente consta de un único test.py
archivo con múltiples rutas y la main()
ruta definida. ¿Hay alguna forma de que pueda crear un test2.py
archivo que contenga rutas que no se manejaron test.py
?
@app.route('/somepath')
def somehandler():
# Handler code here
Me preocupa que haya demasiadas rutas test.py
y me gustaría hacerlo de modo que pueda correr python test.py
, lo que también recogerá las rutas test.py
como si fueran parte del mismo archivo. ¿Qué cambios tengo que hacer test.py
y / o incluir test2.py
para que esto funcione?
Puede usar un truco simple que es importar la variable de aplicación de matraz de main dentro de otro archivo, como:
test-routes.py
y en sus archivos principales, donde declaró la aplicación de matraz, importe rutas de prueba, como:
app.py
Funciona desde mi lado.
fuente
__main__
refiere a su archivo de entrada, ¡eso es!import test-routes
no puede estar en la parte superior delapp.py
archivo. Se estrelló gunicorn pero luego de mover la importación al final del archivo, funcionó. "solo nos aseguramos de que el módulo se importe y lo estamos haciendo al final del archivo"Me gustaría recomendar frasco vacío en GitHub.
Proporciona una manera fácil de entender Blueprints , múltiples vistas y extensiones .
fuente
Dividir la aplicación en planos es una gran idea. Sin embargo, si esto no es suficiente, y si desea dividir el Blueprint en sí en múltiples archivos py, esto también es posible utilizando el sistema de importación del módulo Python normal y luego recorrer todas las rutas que se importan de los otros archivos .
Creé un Gist con el código para hacer esto:
https://gist.github.com/Jaza/61f879f577bc9d06029e
Hasta donde sé, esta es la única forma factible de dividir un Blueprint en este momento. No es posible crear "sub-planos" en Flask, aunque hay un problema abierto con mucha discusión sobre esto:
https://github.com/mitsuhiko/flask/issues/593
Además, incluso si fuera posible (y probablemente sea posible usar algunos de los fragmentos de ese hilo de problemas), los planos secundarios pueden ser demasiado restrictivos para su caso de uso de todos modos, por ejemplo, si no desea todas las rutas en un submódulo para tener el mismo sub-prefijo de URL.
fuente
Esta tarea puede llevarse a cabo sin planos e importaciones difíciles utilizando el Mapa de URL centralizado
app.py
views.py
fuente