Flask Extensions Overview
Flask stays minimal by design.
Extensions add features like:
- databases (Flask-SQLAlchemy)
- migrations (Flask-Migrate)
- login/session management (Flask-Login)
- forms (Flask-WTF)
- mail, caching, rate limiting, etc.
The extension pattern
Most extensions support this pattern:
# extensions.py
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
db = SQLAlchemy()
login_manager = LoginManager()# extensions.py
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
db = SQLAlchemy()
login_manager = LoginManager()Then inside your factory:
from .extensions import db, login_manager
db.init_app(app)
login_manager.init_app(app)from .extensions import db, login_manager
db.init_app(app)
login_manager.init_app(app)Why this matters
It avoids circular imports and allows:
- creating multiple app instances
- independent testing
Common extensions
- Flask-Login
- Flask-WTF
- Flask-Migrate
- Flask-Mail
- Flask-Admin
- Flask-Limiter (rate limiting)
- Flask-Caching
Pick extensions carefully and keep them consistent with your architecture.
If this helped you, consider buying me a coffee ☕
Buy me a coffeeWas this page helpful?
Let us know how we did
