Bird
Raised Fist0
Flaskframework~20 mins

Route naming conventions in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flask Route Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Flask route naming conventions
Which of the following route names follows the best Flask naming convention for a URL that shows a user's profile page?
A/user-profile
B/UserProfile
C/user_profile
D/userProfile
Attempts:
2 left
💡 Hint
Think about readability and common URL patterns using hyphens or underscores.
❓ component_behavior
intermediate
2:00remaining
Route behavior with trailing slashes
Given a Flask route defined as @app.route('/dashboard/'), what happens when a user visits /dashboard (without the trailing slash)?
AFlask raises a runtime error
BFlask returns a 404 Not Found error
CFlask serves the '/dashboard/' route without redirect
DFlask redirects to '/dashboard/' automatically
Attempts:
2 left
💡 Hint
Think about how Flask handles routes with trailing slashes and user requests without them.
📝 Syntax
advanced
2:00remaining
Correct route parameter syntax in Flask
Which of the following route definitions correctly captures an integer user ID in Flask?
Flask
@app.route(...)
A/user/<id:int>
B/user/<int:user_id>
C/user/<user_id:int>
D/user/<integer:user_id>
Attempts:
2 left
💡 Hint
Flask uses a specific syntax for typed route parameters.
🔧 Debug
advanced
2:00remaining
Debugging route conflicts in Flask
Consider these two Flask routes:
@app.route('/item/')
@app.route('/item/new')
What problem will occur when a user visits /item/new?
AThe '/item/new' route will never be reached because '/item/<id>' captures 'new' as id
BFlask will raise a runtime error due to duplicate routes
CBoth routes will work correctly without conflict
DFlask will redirect '/item/new' to '/item/<id>'
Attempts:
2 left
💡 Hint
Think about how Flask matches routes in order and how variable routes capture strings.
❓ lifecycle
expert
3:00remaining
Order of route matching in Flask
Given these Flask routes:
1. @app.route('/post/')
2. @app.route('/post/archive')
3. @app.route('/post/')
In what order does Flask check these routes when a user visits /post/archive?
A2, 1, 3
B1, 3, 2
C1, 2, 3
D3, 1, 2
Attempts:
2 left
💡 Hint
Flask matches routes in the order they are defined in the code.

Practice

(1/5)
1. Which of the following is the best practice for naming a Flask route for a user profile page?
easy
A. /user-profile
B. /UserProfile
C. /user_profile
D. /User-Profile

Solution

  1. Step 1: Understand Flask route naming conventions

    Flask routes should be lowercase and use hyphens to separate words for readability and consistency.
  2. Step 2: Evaluate each option

    /user-profile uses lowercase letters and hyphens, which is the recommended style. Options B and D use uppercase letters, which is not standard. /user_profile uses underscores, which is less preferred than hyphens in URLs.
  3. Final Answer:

    /user-profile -> Option A
  4. Quick Check:

    Lowercase + hyphens = /user-profile [OK]
Hint: Use lowercase and hyphens for route names [OK]
Common Mistakes:
  • Using uppercase letters in route names
  • Using underscores instead of hyphens
  • Mixing uppercase and lowercase inconsistently
2. Which of the following Flask route definitions is syntactically correct for a dynamic user ID?
easy
A. @app.route('/user/')
B. @app.route('/user/{id}')
C. @app.route('/user/:id')
D. @app.route('/user/')

Solution

  1. Step 1: Recall Flask dynamic route syntax

    Flask uses angle brackets with optional type converters like <int:id> to define dynamic parts.
  2. Step 2: Check each option's syntax

    @app.route('/user/') correctly uses <int:id>. @app.route('/user/{id}') uses curly braces which is invalid in Flask. @app.route('/user/:id') uses colon syntax from other frameworks, not Flask. @app.route('/user/') reverses type and variable name, which is incorrect.
  3. Final Answer:

    @app.route('/user/<int:id>') -> Option A
  4. Quick Check:

    Flask dynamic route = <type:variable> [OK]
Hint: Use syntax for dynamic integer routes [OK]
Common Mistakes:
  • Using curly braces instead of angle brackets
  • Reversing type and variable name order
  • Using colon syntax from other frameworks
3. What will be the output when accessing the route /product/42 given this Flask code?
@app.route('/product/')
def show_product(product_id):
    return f"Product ID: {product_id}"
medium
A. TypeError
B. Product ID: 42
C. 404 Not Found
D. Product ID: product_id

Solution

  1. Step 1: Understand route matching and parameter passing

    The route /product/<int:product_id> captures the integer 42 and passes it as product_id to the function.
  2. Step 2: Evaluate the function return

    The function returns a string with the product ID inserted, so it returns "Product ID: 42".
  3. Final Answer:

    Product ID: 42 -> Option B
  4. Quick Check:

    Dynamic route passes 42 correctly [OK]
Hint: Dynamic routes pass variables to functions as parameters [OK]
Common Mistakes:
  • Expecting the variable name as string output
  • Confusing 404 error with route syntax
  • Assuming type errors without cause
4. Identify the error in this Flask route definition:
@app.route('/order/')
def order(order_id):
    return f"Order {order_id}"

Which fix is correct?
medium
A. Change order_id to orderid in route and function
B. Remove int: and use <order_id> only
C. No fix needed; the code is correct
D. Add a trailing slash to the route like /order/<int:order_id>/

Solution

  1. Step 1: Check route and function parameter consistency

    The route uses <int:order_id> and the function parameter is order_id, which matches correctly.
  2. Step 2: Verify Flask route syntax and behavior

    The syntax is valid, and Flask accepts routes with or without trailing slashes. No error exists here.
  3. Final Answer:

    No fix needed; the code is correct -> Option C
  4. Quick Check:

    Matching names and valid syntax = correct code [OK]
Hint: Matching route variables and function params means no fix needed [OK]
Common Mistakes:
  • Changing variable names unnecessarily
  • Removing type converters without reason
  • Thinking trailing slash is mandatory
5. You want to create a Flask route for blog posts with a slug (text) identifier. Which route name follows best practices and correctly captures the slug as a string?
hard
A. @app.route('/blogPost/<slug>')
B. @app.route('/blog_post/')
C. @app.route('/blog-post/<slug>')
D. @app.route('/blog-post/')

Solution

  1. Step 1: Identify route naming conventions

    Use lowercase letters and hyphens for route names, so /blog-post/ is preferred over underscores or camelCase.
  2. Step 2: Check dynamic segment syntax

    Flask uses <string:slug> to specify a string variable. @app.route('/blog-post/') uses both correct route naming and dynamic segment syntax.
  3. Final Answer:

    @app.route('/blog-post/<string:slug>') -> Option D
  4. Quick Check:

    Lowercase + hyphen + <string:var> = best practice [OK]
Hint: Use lowercase hyphens and for text routes [OK]
Common Mistakes:
  • Using underscores or camelCase in route names
  • Omitting type in dynamic segments
  • Mixing naming styles inconsistently
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