Uploaded: Nov. 29 2025 | Modified: Nov. 29 2025
Flask Blueprints Explained: How to Structure Your Flask App
Flask Blueprints make it easier to organize your code as your application grows. Instead of placing all routes in a single file, Blueprints allow you to split your app into smaller, reusable modules.
This guide will show you how to structure your Flask app using Blueprints with a clean and scalable setup.
Example Project Structure
myapp
│
├── app
│ ├── __init__.py
│ ├── home.py
│ ├── auth.py
│ ├── info.py
│
└── run.py
Each file inside the app folder contains its own Blueprint.
Step 1: Create Blueprints
/app/home.py
from flask import Blueprint
home_bp = Blueprint('home_bp', __name__)
@home_bp.route('/')
def index():
return 'Index Page!'
/app/auth.py
from flask import Blueprint
auth_bp = Blueprint('auth_bp', __name__)
@auth_bp.route('/login')
def login():
return 'Login Page!'
@auth_bp.route('/logout')
def logout():
return 'Logout Page!'
/app/info.py
from flask import Blueprint
info_bp = Blueprint('info_bp', __name__)
@info_bp.route('/about')
def about():
return 'About Page!'
@info_bp.route('/contact')
def contact():
return 'Contact Page!'
Step 2: Register Blueprints in __init__.py
from flask import Flask
def create_app():
app = Flask(__name__)
from .home import home_bp
from .auth import auth_bp
from .info import info_bp
app.register_blueprint(home_bp)
app.register_blueprint(auth_bp)
app.register_blueprint(info_bp)
return app
Step 3: Run Your Flask App
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
Frequently Asked Questions (FAQ)
1. What is a Flask Blueprint?
A Flask Blueprint is a way to organize your routes, views, and logic into separate modules. It helps keep large applications clean, modular, and easier to maintain.
2. Why should I use Blueprints instead of one large app.py file?
Using one big file becomes hard to manage as your app grows. Blueprints help by:
- Splitting features into separate files
- Making code reusable
- Improving readability
- Allowing teamwork (developers can work on separate modules)
3. Where should I register my Blueprints?
The recommended place is inside app/__init__.py using a factory function like:
def create_app():
app = Flask(__name__)
app.register_blueprint(example_bp)
return app
This keeps your app modular and easy to test.
4. Can Blueprints have their own templates and static files?
Yes! Blueprints can have their own folders:
app/
├── home/
│ ├── templates/
│ └── static/
Then define your Blueprint like:
home_bp = Blueprint('home_bp', __name__, template_folder='templates', static_folder='static')
5. Can I add a URL prefix to a Blueprint?
Absolutely! Example:
app.register_blueprint(auth_bp, url_prefix='/auth')
Routes become:
/auth/login/auth/logout
6. Are Blueprints the same as Flask apps?
Blueprints are not standalone apps. They are components that get registered into a real Flask application.
7. How many Blueprints can I use?
As many as you need. Common examples:
auth(login/register)dashboardapiadminblog
8. Should I use Blueprints for small projects?
If your project is tiny, they are optional. But learning Blueprints early helps you scale your code properly when the project grows.
Final Thoughts
Flask Blueprints provide a clean and modular way to structure your application. Once you get comfortable using them, building larger Flask projects becomes much easier and more maintainable.