Quando si sviluppa un'applicazione Flask di dimensioni medio-grandi, è fondamentale strutturarla in modo modulare. Questo approccio consente di migliorare la manutenibilità, la scalabilità e la leggibilità del codice. In questo articolo vedremo come suddividere un'app Flask in moduli usando i Blueprint.
1. Struttura base del progetto
Una possibile struttura modulare potrebbe essere la seguente:
myapp/
│
├── app/
│ ├── __init__.py
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── users.py
│ │ └── posts.py
│ ├── models/
│ │ ├── __init__.py
│ │ └── user.py
│ └── templates/
│ └── ...
│
├── config.py
└── run.py
2. Inizializzazione dell'app
Nel file app/__init__.py
si crea e configura l'istanza dell'app Flask:
from flask import Flask
def create_app():
app = Flask(__name__)
app.config.from_pyfile('../config.py')
from .routes import register_blueprints
register_blueprints(app)
return app
3. Registrazione dei Blueprint
Nel file app/routes/__init__.py
si centralizza la registrazione dei blueprint:
from .users import users_bp
from .posts import posts_bp
def register_blueprints(app):
app.register_blueprint(users_bp)
app.register_blueprint(posts_bp)
4. Esempio di Blueprint
Nel file app/routes/users.py
si definisce un blueprint dedicato alle rotte degli utenti:
from flask import Blueprint, render_template
users_bp = Blueprint('users', __name__, url_prefix='/users')
@users_bp.route('/')
def user_index():
return render_template('users/index.html')
5. Avvio dell'app
Nel file run.py
si avvia l'applicazione:
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
Conclusione
Organizzare un'app Flask in modo modulare aiuta a mantenere il progetto ordinato e facilmente estendibile. Utilizzando i Blueprint è possibile separare le varie funzionalità in moduli indipendenti e riutilizzabili.