Chapter 9 of 10
Blueprints are Flask's way to organise a larger application into modular components β equivalent to Django's apps. Each blueprint handles one area of the application.
myapp/
βββ app.py # or __init__.py if using a package
βββ config.py
βββ models.py
βββ extensions.py # db, migrate, etc.
βββ blueprints/
βββ auth/
β βββ __init__.py
β βββ routes.py
β βββ forms.py
βββ api/
β βββ __init__.py
β βββ routes.py
βββ main/
βββ __init__.py
βββ routes.py# blueprints/api/__init__.py
from flask import Blueprint
api = Blueprint("api", __name__, url_prefix="/api")
from . import routes # import routes to register them
# blueprints/api/routes.py
from flask import jsonify
from . import api
from models import Course
@api.route("/courses")
def get_courses():
courses = Course.query.filter_by(is_live=True).all()
return jsonify([c.to_dict() for c in courses])
@api.route("/courses/<int:id>")
def get_course(id):
course = Course.query.get_or_404(id)
return jsonify(course.to_dict())
# app.py β register blueprints
from flask import Flask
from blueprints.api import api
from blueprints.auth import auth
from blueprints.main import main
def create_app():
app = Flask(__name__)
app.config.from_object("config.Config")
db.init_app(app)
app.register_blueprint(api)
app.register_blueprint(auth)
app.register_blueprint(main)
return app