📖 Scenario: You are building a simple web app using Flask. You want to create a route that can accept a dynamic username in the URL and greet that user personally.
🎯 Goal: Build a Flask app with a route that uses a dynamic parameter called username in the URL path. When a user visits /hello/<username>, the app should greet them by name.
📋 What You'll Learn
Create a Flask app instance named app
Define a route with the URL pattern /hello/<username>
Create a view function named hello_user that accepts username as a parameter
Return a greeting string that includes the username
💡 Why This Matters
🌍 Real World
Web apps often need to handle user-specific pages or data by capturing parts of the URL dynamically.
💼 Career
Understanding dynamic routes is essential for backend web development roles using Flask or similar frameworks.
Progress0 / 4 steps
1
Create the Flask app instance
Import Flask from flask and create a Flask app instance called app.
Flask
Hint
Use Flask(__name__) to create the app instance.
2
Define the route with dynamic parameter
Use the @app.route decorator to define a route with the URL pattern /hello/<username>.
Flask
Hint
Use angle brackets <> around username in the route URL.
3
Create the view function to accept the parameter
Define a function named hello_user that takes username as a parameter and returns a greeting string including the username.
Flask
Hint
Use an f-string to include username in the returned greeting.
4
Add the app run command
Add the code to run the Flask app with app.run() inside the if __name__ == '__main__': block.
Flask
Hint
This block ensures the app runs only when the script is executed directly.
Practice
(1/5)
1. What does the dynamic parameter in a Flask route do? @app.route('/user/<username>')
easy
A. It captures the part of the URL as a variable passed to the function.
B. It creates a fixed URL that never changes.
C. It makes the route only accept numbers.
D. It disables the route from working.
Solution
Step 1: Understand dynamic parameters in Flask routes
Dynamic parameters are parts of the URL wrapped in <> that Flask captures as variables.
Step 2: How Flask uses the captured variable
The captured part is passed as an argument to the view function to use inside the code.
Final Answer:
It captures the part of the URL as a variable passed to the function. -> Option A
Quick Check:
Dynamic parameter = variable in function [OK]
Hint: Dynamic parts in <> become function arguments [OK]
Common Mistakes:
Thinking dynamic means fixed URL
Assuming only numbers can be captured
Believing dynamic disables the route
2. Which of these is the correct syntax to define a route with an integer parameter named post_id?
easy
A. @app.route('/post/')
B. @app.route('/post/<post_id>')
C. @app.route('/post/')
D. @app.route('/post/')
Solution
Step 1: Identify the type syntax for dynamic parameters
Flask uses <type:name> to specify the parameter type, like int for integers.
Step 2: Match the correct syntax for integer parameter
The correct syntax is <int:post_id> to ensure only integers are accepted.
Final Answer:
@app.route('/post/<int:post_id>') -> Option A
Quick Check:
Integer type uses <int:name> [OK]
Hint: Use <int:name> for integer parameters in routes [OK]
Common Mistakes:
Omitting the type for integer parameters
Using str instead of int for numbers
Using float when integer is needed
3. What will be the output if you visit /product/42 given this Flask route?
B. Function parameter name does not match route parameter name.
C. Missing return statement in function.
D. Route URL should not have dynamic parameters.
Solution
Step 1: Compare route parameter and function argument names
The route defines <int:item_id> but the function uses parameter named item, which is inconsistent.
Step 2: Understand how Flask matches parameters
Flask passes the URL part as argument named item_id, so function must accept item_id to receive it correctly.
Final Answer:
Function parameter name does not match route parameter name. -> Option B
Quick Check:
Parameter names must match [OK]
Hint: Function argument must match route parameter name exactly [OK]
Common Mistakes:
Using different names for route and function parameters
Thinking type int is invalid syntax
Forgetting to return a value
5. You want a Flask route that accepts a username (string) and an optional integer page number with default 1. Which route and function definition is correct?
hard
A. @app.route('/profile/<username>/')
def profile(username, page=1):
return f"User: {username}, Page: {page}"
B. @app.route('/profile/<username>/<page>')
def profile(username, page=1):
return f"User: {username}, Page: {page}"
C. @app.route('/profile/<username>')
def profile(username, page=1):
return f"User: {username}, Page: {page}"
D. @app.route('/profile/<username>/')
def profile(username, page):
return f"User: {username}, Page: {page}"
Solution
Step 1: Understand optional parameters in Flask routes
Flask routes do not support optional URL parts directly; optional parameters must be handled with defaults in function and route without that part.
Step 2: Check which route allows optional page parameter
Route with only <username> works, and function uses default page=1 if not provided.