📖 Scenario: You are building a simple Flask web app that has two parts: a main page and a user section. To keep the code organized, you will use Flask Blueprints.
🎯 Goal: Create a Flask Blueprint for the user section and register it with the main Flask app. This will help you separate routes and keep your app clean.
📋 What You'll Learn
Create a Blueprint named user_bp with the import name __name__ and URL prefix /user
Define a route /profile inside the user_bp Blueprint that returns the text 'User Profile'
Create the main Flask app instance named app
Register the user_bp Blueprint with the main app app
💡 Why This Matters
🌍 Real World
Blueprints help organize large Flask apps by grouping related routes and code. This makes apps easier to maintain and scale.
💼 Career
Many companies use Flask Blueprints to build modular web apps. Knowing how to create and register Blueprints is a key skill for Flask developers.
Progress0 / 4 steps
1
Create the user Blueprint
Import Blueprint from flask and create a Blueprint called user_bp with the import name __name__ and URL prefix /user.
Flask
Hint
Think of Blueprint as a mini app inside your main app. You give it a name, the current file's name, and a URL prefix.
2
Add a route to the user Blueprint
Inside the user_bp Blueprint, define a route for /profile that returns the string 'User Profile'.
Flask
Hint
Use the @user_bp.route('/profile') decorator to add the route, then define a function that returns the text.
3
Create the main Flask app
Import Flask from flask and create the main app instance called app.
Flask
Hint
The main app is created by calling Flask(__name__). Don't forget to import Flask.
4
Register the Blueprint with the app
Register the user_bp Blueprint with the main Flask app app using app.register_blueprint(user_bp).
Flask
Hint
Use app.register_blueprint(user_bp) to connect the Blueprint to your main app.
Practice
(1/5)
1. What is the main purpose of using a Blueprint in a Flask application?
easy
A. To handle user authentication
B. To create database models automatically
C. To organize routes and related code into reusable modules
D. To serve static files directly
Solution
Step 1: Understand Blueprint role
A Blueprint groups routes and code to keep the app organized and modular.
Step 2: Compare options
Only To organize routes and related code into reusable modules describes organizing routes and code. Others describe unrelated tasks.
Final Answer:
To organize routes and related code into reusable modules -> Option C
Quick Check:
Blueprint purpose = organize routes [OK]
Hint: Blueprints group routes for modular apps [OK]
Common Mistakes:
Thinking Blueprint creates database models
Confusing Blueprint with authentication
Assuming Blueprint serves static files
2. Which of the following is the correct way to create a Blueprint named 'blog' in Flask?
easy
A. blog = Blueprint('blog', app)
B. blog = Blueprint('blog')
C. blog = Blueprint(__name__, 'blog')
D. blog = Blueprint('blog', __name__)
Solution
Step 1: Recall Blueprint constructor
The Blueprint constructor requires the name and import name (usually __name__).
Step 2: Check options
blog = Blueprint('blog', __name__) uses correct order: name 'blog' and __name__. Others miss or swap arguments.
Final Answer:
blog = Blueprint('blog', __name__) -> Option D
Quick Check:
Blueprint(name, __name__) = correct [OK]
Hint: Blueprint needs name and __name__ args [OK]
Common Mistakes:
Omitting __name__ argument
Swapping argument order
Passing app instead of __name__
3. Given this code snippet, what will be the output when accessing the '/hello' route?
from flask import Flask, Blueprint
app = Flask(__name__)
hello_bp = Blueprint('hello', __name__)
@hello_bp.route('/hello')
def hello():
return 'Hello from Blueprint!'
app.register_blueprint(hello_bp)
if __name__ == '__main__':
app.run()
medium
A. 404 Not Found error
B. Hello from Blueprint!
C. 500 Internal Server Error
D. Empty response
Solution
Step 1: Check route registration
The route '/hello' is defined in the Blueprint and the Blueprint is registered on the app.
Step 2: Understand response
Accessing '/hello' calls the hello() function returning 'Hello from Blueprint!'.
4. Identify the error in this Flask Blueprint setup:
from flask import Flask, Blueprint
app = Flask(__name__)
admin_bp = Blueprint('admin', __name__)
@admin_bp.route('/dashboard')
def dashboard():
return 'Admin Dashboard'
# Missing line here
if __name__ == '__main__':
app.run()
medium
A. Blueprint is not registered with the app
B. Route decorator syntax is wrong
C. Blueprint is not created correctly
D. Function dashboard() is missing return statement
Solution
Step 1: Check Blueprint creation and route
Blueprint and route are correctly defined with proper syntax and return statement.
Step 2: Look for registration
The Blueprint is not registered with the Flask app using app.register_blueprint(admin_bp).
Final Answer:
Blueprint is not registered with the app -> Option A
Quick Check:
Missing app.register_blueprint() causes route not found [OK]
Hint: Always register Blueprint with app [OK]
Common Mistakes:
Forgetting app.register_blueprint()
Misplacing route decorator
Missing return in route function
5. You want to create two Blueprints, user_bp and admin_bp, each with a route '/profile'. How do you register them so that user_bp routes are under '/user' and admin_bp routes under '/admin' in the main app?
hard
A. app.register_blueprint(user_bp, url_prefix='/user')\napp.register_blueprint(admin_bp, url_prefix='/admin')
B. app.register_blueprint(user_bp)\napp.register_blueprint(admin_bp)
C. app.register_blueprint(user_bp, url_prefix='/admin')\napp.register_blueprint(admin_bp, url_prefix='/user')
D. user_bp.route('/user/profile')\nadmin_bp.route('/admin/profile')
Solution
Step 1: Understand url_prefix usage
To group routes under a path prefix, use url_prefix when registering Blueprints.
Step 2: Apply prefixes correctly
Register user_bp with url_prefix='/user' and admin_bp with url_prefix='/admin'.
Final Answer:
app.register_blueprint(user_bp, url_prefix='/user')\napp.register_blueprint(admin_bp, url_prefix='/admin') -> Option A
Quick Check:
url_prefix sets route base path [OK]
Hint: Use url_prefix to separate Blueprint routes [OK]
Common Mistakes:
Not using url_prefix causing route conflicts
Swapping prefixes between Blueprints
Trying to set route paths inside Blueprint incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.