Dynamic parameters let your web app handle different inputs in the URL. This helps show different pages or data without making many routes.
Route with dynamic parameters in Flask
@app.route('/path/<parameter>') def function_name(parameter): # use parameter inside function return f"Value is {parameter}"
Use
The function receives this variable as an argument to use inside.
@app.route('/user/<username>') def show_user(username): return f"User: {username}"
@app.route('/post/<int:post_id>') def show_post(post_id): return f"Post ID: {post_id}"
@app.route('/item/<float:price>') def show_price(price): return f"Price: {price}"
This Flask app greets anyone by name from the URL. For example, visiting /hello/Alice shows "Hello, Alice!".
from flask import Flask app = Flask(__name__) @app.route('/hello/<name>') def hello(name): return f"Hello, {name}!" if __name__ == '__main__': app.run(debug=True)
You can specify types like int, float, or path for parameters to control what is accepted.
If you don't specify a type, the parameter is treated as a string.
Dynamic routes help keep your app clean and flexible by reusing one route for many inputs.
Dynamic parameters let routes accept variable parts in the URL.
Use <parameter> in the route and receive it as a function argument.
Specify types like int or float to control input format.
Practice
@app.route('/user/<username>')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 AQuick Check:
Dynamic parameter = variable in function [OK]
- Thinking dynamic means fixed URL
- Assuming only numbers can be captured
- Believing dynamic disables the route
post_id?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 AQuick Check:
Integer type uses <int:name> [OK]
- Omitting the type for integer parameters
- Using str instead of int for numbers
- Using float when integer is needed
/product/42 given this Flask route?@app.route('/product/')
def product(id):
return f"Product ID: {id}"Solution
Step 1: Understand the route and parameter type
The route expects an integer parameter named id, which matches 42 in the URL.Step 2: Check the function return value
The function returns a string with the id value inserted, so it returns "Product ID: 42".Final Answer:
Product ID: 42 -> Option DQuick Check:
Dynamic int parameter outputs value [OK]
- Expecting the literal string instead of value
- Confusing parameter name with string
- Assuming route returns error for valid int
@app.route('/item/')
def item(item):
return f"Item {item_id}"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 BQuick Check:
Parameter names must match [OK]
- Using different names for route and function parameters
- Thinking type int is invalid syntax
- Forgetting to return a value
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.Final Answer:
@app.route('/profile/<username>')\ndef profile(username, page=1):\n return f"User: {username}, Page: {page}" -> Option CQuick Check:
Optional params handled by function defaults, not route [OK]
- Assuming Flask supports optional URL parts in one route
- Using default values with required route parameters
- Mismatching parameter types in route and function
Ready to prove it?
Pass the test and this pattern moves unknown
