Bird
Raised Fist0
Djangoframework~20 mins

URL parameters with angle brackets in Django - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
URL Parameter Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
1:30remaining
What is the output of this Django URL pattern match?
Given the URL pattern path('item/<int:id>/', view_function) and a request to /item/42/, what value does the view receive for id?
Django
from django.urls import path

def view_function(request, id):
    return id

urlpatterns = [
    path('item/<int:id>/', view_function),
]
AThe view receives the string '42'
BThe view receives the integer 42
CThe view receives None
DThe view raises a ValueError
Attempts:
2 left
💡 Hint
Remember that <int:id> converts the URL part to an integer before passing it.
📝 Syntax
intermediate
1:30remaining
Which URL pattern syntax is correct to capture a string parameter named 'username'?
Choose the correct Django URL pattern syntax to capture a string parameter called username.
Apath('user/<str:username>/', user_view)
Bpath('user/username/', user_view)
Cpath('user/<string:username>/', user_view)
Dpath('user/<text:username>/', user_view)
Attempts:
2 left
💡 Hint
Django uses specific converters like str, int, slug.
🔧 Debug
advanced
2:00remaining
Why does this URL pattern cause a 404 error for /product/abc123/?
Given the URL pattern path('product/<int:product_id>/', product_view), why does accessing /product/abc123/ cause a 404 error?
Django
urlpatterns = [
    path('product/<int:product_id>/', product_view),
]
ABecause 'abc123' is not an integer, so the pattern does not match
BBecause the URL pattern should use <str:product_id> instead
CBecause the URL is missing a trailing slash
DBecause the view function is missing
Attempts:
2 left
💡 Hint
Check what the <int:product_id> converter expects.
❓ state_output
advanced
1:30remaining
What is the value of 'slug' captured by this URL pattern?
Given the URL pattern path('blog/<slug:slug>/', blog_view) and a request to /blog/hello-world-2024/, what is the value of slug passed to the view?
A'hello/world/2024'
B'hello world 2024'
C'hello_world_2024'
D'hello-world-2024'
Attempts:
2 left
💡 Hint
The slug converter matches letters, numbers, underscores, and hyphens.
🧠 Conceptual
expert
2:30remaining
What happens when using angle brackets without specifying a converter in Django URL patterns?
Consider the URL pattern path('page/<page_num>/', page_view). What behavior occurs?
ADjango raises a ValueError about invalid path converter syntax
BDjango raises a TypeError in the view function
CDjango treats 'page_num' as a string parameter by default
DDjango ignores the angle brackets and matches literally
Attempts:
2 left
💡 Hint
Angle brackets without a colon (<param>) default to the str converter.

Practice

(1/5)
1. What does the angle bracket syntax <int:id> in a Django URL pattern do?
easy
A. Creates a static URL segment named 'int:id'.
B. Specifies a query parameter instead of a URL segment.
C. Defines a string variable named 'id' without type conversion.
D. Captures a part of the URL as an integer variable named 'id'.

Solution

  1. Step 1: Understand angle brackets in Django URLs

    Angle brackets capture parts of the URL as variables to pass to views.
  2. Step 2: Recognize the converter and variable name

    The syntax <int:id> captures an integer named 'id'.
  3. Final Answer:

    Captures a part of the URL as an integer variable named 'id'. -> Option D
  4. Quick Check:

    URL parameter with <int:id> = integer variable capture [OK]
Hint: Angle brackets capture URL parts as typed variables [OK]
Common Mistakes:
  • Thinking it creates a static URL segment
  • Confusing query parameters with URL parameters
  • Ignoring the type converter like int or str
2. Which of the following is the correct syntax to capture a slug parameter named 'post_slug' in a Django URL pattern?
easy
A. path('post/<str:post_slug>/', views.post_detail)
B. path('post/<slug:post_slug>/', views.post_detail)
C. path('post/<post_slug:slug>/', views.post_detail)
D. path('post/<slug>post_slug/', views.post_detail)

Solution

  1. Step 1: Identify correct converter and variable order

    The correct syntax is <converter:variable_name>, so <slug:post_slug> is correct.
  2. Step 2: Check the full path syntax

    path('post/<slug:post_slug>/', views.post_detail) uses path('post/<slug:post_slug>/', views.post_detail), which is valid Django syntax.
  3. Final Answer:

    path('post/<slug:post_slug>/', views.post_detail) -> Option B
  4. Quick Check:

    Converter before variable name = path('post/<slug:post_slug>/', views.post_detail) [OK]
Hint: Use <converter:variable> format for URL parameters [OK]
Common Mistakes:
  • Swapping converter and variable name
  • Missing colon between converter and variable
  • Using invalid syntax like <slug>post_slug
3. Given this URL pattern: path('user/<int:user_id>/', views.profile), what will user_id be if the URL is /user/42/?
medium
A. A slug '42'
B. The string '42'
C. The integer 42
D. A syntax error occurs

Solution

  1. Step 1: Understand the int converter effect

    The <int:user_id> converter converts the URL segment to an integer.
  2. Step 2: Apply to the URL segment '42'

    The string '42' from the URL is converted to the integer 42 before passing to the view.
  3. Final Answer:

    The integer 42 -> Option C
  4. Quick Check:

    int converter converts URL part to integer [OK]
Hint: int converter makes URL part an integer, not string [OK]
Common Mistakes:
  • Assuming the parameter is a string
  • Confusing slug with int converter
  • Expecting a syntax error for valid syntax
4. Identify the error in this Django URL pattern: path('article/<int:id>', views.detail)
medium
A. Missing closing angle bracket '>' after 'id'.
B. Using 'int' converter instead of 'str'.
C. View function 'detail' is not imported.
D. URL pattern should not use angle brackets.

Solution

  1. Step 1: Check angle bracket syntax

    The pattern uses <int:id> without the closing '>' character, which is invalid syntax.
  2. Step 2: Confirm correct syntax

    The correct syntax requires both opening and closing angle brackets: <int:id>.
  3. Final Answer:

    Missing closing angle bracket '>' after 'id'. -> Option A
  4. Quick Check:

    Angle brackets must be complete <int:id> [OK]
Hint: Always close angle brackets in URL parameters [OK]
Common Mistakes:
  • Forgetting the closing '>'
  • Confusing converter types
  • Assuming view import errors cause syntax issues
5. You want to create a URL pattern that captures a username (letters, numbers, underscores) and a post ID (integer). Which of these is the best Django URL pattern?
hard
A. path('profile/<slug:username>/post/<int:post_id>/', views.post_view)
B. path('profile/<str:username>/post/<int:post_id>/', views.post_view)
C. path('profile/<int:username>/post/<int:post_id>/', views.post_view)
D. path('profile/<username>/post/<post_id>/', views.post_view)

Solution

  1. Step 1: Choose correct converter for username

    Usernames usually contain letters, numbers, underscores, so 'slug' converter fits best.
  2. Step 2: Confirm integer converter for post ID

    Post ID should be an integer, so <int:post_id> is correct.
  3. Step 3: Evaluate options

    path('profile/<slug:username>/post/<int:post_id>/', views.post_view) uses <slug:username> and <int:post_id>, matching requirements perfectly.
  4. Final Answer:

    path('profile/<slug:username>/post/<int:post_id>/', views.post_view) -> Option A
  5. Quick Check:

    Slug for username + int for post ID = path('profile/<slug:username>/post/<int:post_id>/', views.post_view) [OK]
Hint: Use slug for usernames, int for numeric IDs in URLs [OK]
Common Mistakes:
  • Using str converter which allows spaces
  • Using int converter for username
  • Omitting converters causing string default
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