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 *