with simple example create crear consumir python web-services file-organization flask

simple - Divide la aplicación Python Flask en varios archivos



web service python example (4)

Otra forma de hacer esto puede ser con la carga diferida , donde se adjuntarían explícitamente funciones de visualización según las necesidades.

Tengo problemas para entender cómo dividir una aplicación de matraz en varios archivos.

Estoy creando un servicio web y quiero dividir las API en diferentes archivos (AccountAPI.py, UploadAPI.py, ...), así que no tengo un gran archivo python.

He leído que puedes hacer esto con Blueprints, pero no estoy del todo seguro de que la ruta sea la correcta para mí.

En última instancia, quiero ejecutar un archivo Python principal e incluir otros archivos para que, cuando se ejecute, se consideren un gran archivo.

Por ejemplo, si tengo Main.py y AccountAPI.py, quiero poder hacer esto:

Main.py:

from flask import Flask import AccountAPI app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()

AccountAPI.py:

@app.route("/account") def accountList(): return "list of accounts"

Sé con este ejemplo que obviamente no funcionará, pero ¿es posible hacer algo así?

Gracias


Sí, los Blueprints son la forma correcta de hacerlo. Lo que estás tratando de hacer se puede lograr así:

Main.py

from flask import Flask from AccountAPI import account_api app = Flask(__name__) app.register_blueprint(account_api) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()

AccountAPI.py

from flask import Blueprint account_api = Blueprint(''account_api'', __name__) @account_api.route("/account") def accountList(): return "list of accounts"

Si se trata de una opción, puede considerar el uso de diferentes prefijos de URL para las diferentes API / Blueprints para separarlos limpiamente. Esto se puede hacer con una ligera modificación a la llamada register_blueprint anterior:

app.register_blueprint(account_api, url_prefix=''/accounts'')

Para obtener más documentación, también puede echar un vistazo a los documentos oficiales .


Si está utilizando planos y desea enrutar / redireccionar a una url de su plano dentro de una plantilla que está utilizando, necesita usar la instrucción url_for correcta.

En su caso, si desea abrir la cuenta url de su plano, debe indicarlo así en su plantilla :

href="{{ url_for(''account_api.account'') }}"

y para la aplicación principal se vería así:

redirect(url_for(''account_api.account''))

De lo contrario, la biblioteca werkzeug arrojará un error.


Usando Blueprint puede agregar sus rutas en el directorio de routes .

Estructura

app.py routes __init__.py index.py users.py

__init__.py

from flask import Blueprint routes = Blueprint(''routes'', __name__) from .index import * from .users import *

index.py

from flask import render_template from . import routes @routes.route(''/'') def index(): return render_template(''index.html'')

users.py

from flask import render_template from . import routes @routes.route(''/users'') def users(): return render_template(''users.html'')

app.py

from routes import * app.register_blueprint(routes)

Si desea agregar un nuevo archivo de ruta, digamos accounts.py , solo necesita crear el archivo accounts.py en el directorio de routes , al igual que index.py y users.py , luego impórtelo en las routes.__init__.py archivo

from .accounts import *