Bird
Raised Fist0
Flaskframework~10 mins

Blueprint routes and templates in Flask - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Blueprint routes and templates
Create Blueprint
↓
Define routes in Blueprint
↓
Register Blueprint in app
↓
Run Flask app
↓
Request URL matching Blueprint route
↓
Render template from Blueprint folder
This flow shows how a Flask Blueprint is created, routes are defined inside it, then registered with the main app, and finally how a request triggers rendering a template from the Blueprint.
Execution Sample
Flask
from flask import Flask, Blueprint, render_template
app = Flask(__name__)
bp = Blueprint('bp', __name__, template_folder='templates')
@bp.route('/')
def home():
    return render_template('home.html')

app.register_blueprint(bp, url_prefix='/bp')

if __name__ == '__main__':
    app.run()
Defines a Blueprint with a route '/' that renders 'home.html', then registers it under '/bp' prefix in the main app.
Execution Table
StepActionEvaluationResult
1Create Blueprint 'bp'Blueprint object createdbp ready with template_folder='templates'
2Define route '/' in bpRoute '/' added to bpbp has route '/'
3Register bp with app at '/bp'bp routes prefixed with '/bp'app routes include '/bp/'
4Run Flask appApp listens for requestsServer running
5Request URL '/bp/'Matches bp route '/' with prefixCalls home() function
6home() calls render_template('home.html')Template searched in bp's templates folderHTML content of home.html returned
7Response sent to browserBrowser displays rendered pageUser sees home page
8Request URL '/bp/unknown'No matching route404 Not Found error
💡 Execution stops after response sent or 404 error if route not found
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 5After Step 6Final
bpNoneBlueprint objectBlueprint with route '/'Registered with appRoute matched on requestTemplate renderedResponse sent
appFlask appFlask appFlask appFlask app with bp routesRunning serverRunning serverRunning server
Key Moments - 3 Insights
Why does the URL '/bp/' match the Blueprint route '/'?
Because the Blueprint is registered with url_prefix='/bp', all its routes get that prefix. So '/' inside Blueprint becomes '/bp/' in the app (see execution_table step 3 and 5).
Where does Flask look for the template 'home.html' when using Blueprint?
Flask looks inside the Blueprint's template_folder directory specified when creating the Blueprint (step 6). This keeps templates organized per Blueprint.
What happens if a URL does not match any Blueprint route?
Flask returns a 404 Not Found error because no route matches the request (step 8).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the result after Step 3?
ABlueprint routes are registered with the app with prefix '/bp/'
BBlueprint is created but not registered
CApp is running and serving requests
DTemplate is rendered
💡 Hint
Check the 'Result' column in Step 3 of the execution_table
At which step does the template 'home.html' get rendered?
AStep 4
BStep 6
CStep 5
DStep 7
💡 Hint
Look for 'render_template' call in the 'Action' column
If the Blueprint was registered without url_prefix, what would be the URL to access 'home.html'?
A/home.html
B/bp/
C/
D/bp/home.html
💡 Hint
Refer to the explanation in key_moments about url_prefix effect on routes
Concept Snapshot
Blueprints organize routes and templates in Flask.
Create Blueprint with template_folder.
Define routes inside Blueprint.
Register Blueprint with app and optional url_prefix.
Request URL uses prefix + route path.
Templates load from Blueprint folder.
Full Transcript
In Flask, Blueprints help organize routes and templates separately from the main app. First, you create a Blueprint object and specify a folder for its templates. Then, you define routes inside this Blueprint using decorators. Next, you register the Blueprint with the main Flask app, optionally adding a URL prefix. When the app runs and receives a request matching the Blueprint's route (including prefix), it calls the route function. This function can render a template located in the Blueprint's template folder. If no route matches, Flask returns a 404 error. This structure keeps code and templates modular and easier to manage.

Practice

(1/5)
1. What is the main purpose of using a Blueprint in a Flask application?
easy
A. To handle user authentication automatically
B. To organize routes and templates into reusable components
C. To create a new Flask app instance
D. To connect Flask with a database

Solution

  1. Step 1: Understand Blueprint role

    A Blueprint groups related routes and templates to keep code organized.
  2. Step 2: Compare other options

    Connecting to databases, creating app instances, or handling authentication are separate tasks.
  3. Final Answer:

    To organize routes and templates into reusable components -> Option B
  4. Quick Check:

    Blueprint = organize routes/templates [OK]
Hint: Blueprints group routes/templates for better app structure [OK]
Common Mistakes:
  • Thinking Blueprint creates the app instance
  • Confusing Blueprint with database connection
  • Assuming Blueprint handles authentication automatically
2. Which of the following is the correct way to register a Blueprint named blog with a Flask app app using the URL prefix /blog?
easy
A. app.register_blueprint(blog, url_prefix='/blog')
B. app.register_blueprint('/blog', blog)
C. app.register_blueprint(blog.prefix('/blog'))
D. app.register_blueprint(blog, prefix_url='/blog')

Solution

  1. Step 1: Recall correct method signature

    The method is register_blueprint(blueprint, url_prefix='...').
  2. Step 2: Check options for correct syntax

    Only app.register_blueprint(blog, url_prefix='/blog') uses the correct method and parameter names.
  3. Final Answer:

    app.register_blueprint(blog, url_prefix='/blog') -> Option A
  4. Quick Check:

    register_blueprint with url_prefix = app.register_blueprint(blog, url_prefix='/blog') [OK]
Hint: Use url_prefix parameter to set Blueprint URL base [OK]
Common Mistakes:
  • Swapping parameter order
  • Using wrong parameter name like prefix_url
  • Calling prefix as a method on Blueprint
3. Given this Blueprint code:
from flask import Blueprint, render_template
blog = Blueprint('blog', __name__, template_folder='templates')

@blog.route('/post')
def show_post():
    return render_template('post.html')

And this main app code:
from flask import Flask
app = Flask(__name__)
app.register_blueprint(blog, url_prefix='/blog')

What URL should you visit to see the post.html template rendered?
medium
A. /blog
B. /post
C. /blog/post
D. /post/blog

Solution

  1. Step 1: Understand route and url_prefix

    The Blueprint route is '/post', and the Blueprint is registered with prefix '/blog'.
  2. Step 2: Combine prefix and route

    The full URL becomes '/blog/post' to access the route.
  3. Final Answer:

    /blog/post -> Option C
  4. Quick Check:

    url_prefix + route = /blog/post [OK]
Hint: Combine url_prefix and route for full URL [OK]
Common Mistakes:
  • Ignoring url_prefix and using only route
  • Swapping url_prefix and route order
  • Assuming url_prefix is not added to route
4. What is wrong with this Blueprint registration code?
from flask import Flask
app = Flask(__name__)
app.register_blueprint(blog, prefix='/blog')
medium
A. You cannot register blueprints in Flask
B. Blueprint must be registered before app creation
C. Blueprint name must be 'app' to register
D. The parameter should be url_prefix, not prefix

Solution

  1. Step 1: Check parameter name in register_blueprint

    The correct parameter to set URL prefix is url_prefix, not prefix.
  2. Step 2: Validate other options

    Blueprints register after app creation; name can be anything; Flask supports blueprints.
  3. Final Answer:

    The parameter should be url_prefix, not prefix -> Option D
  4. Quick Check:

    Correct param is url_prefix [OK]
Hint: Use url_prefix, not prefix, when registering Blueprint [OK]
Common Mistakes:
  • Using prefix instead of url_prefix
  • Trying to register Blueprint before app exists
  • Thinking Blueprint name must be 'app'
5. You have two Blueprints, admin and user, both with a route /dashboard. How can you register them in your Flask app to avoid URL conflicts and keep URLs clear?
hard
A. Register each Blueprint with a different url_prefix, like /admin and /user
B. Rename one Blueprint's route to /dashboard2
C. Register both Blueprints without any url_prefix
D. Use the same url_prefix for both Blueprints

Solution

  1. Step 1: Understand URL conflicts

    Both Blueprints have the same route /dashboard, which causes conflicts if no prefix is used.
  2. Step 2: Use url_prefix to separate routes

    Assigning different url_prefix values like /admin and /user keeps URLs unique and organized.
  3. Final Answer:

    Register each Blueprint with a different url_prefix, like /admin and /user -> Option A
  4. Quick Check:

    Different url_prefix avoids route conflicts [OK]
Hint: Use unique url_prefix for each Blueprint to avoid conflicts [OK]
Common Mistakes:
  • Not using url_prefix and causing route clashes
  • Renaming routes manually instead of using prefixes
  • Using same url_prefix for multiple Blueprints
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard