📖 Scenario: You are building a simple Django web application for a bookstore. You want to set up URL routes so users can visit different pages like the homepage, a books list, and a contact page.
🎯 Goal: Learn how to use Django's path function to create URL routes that connect URLs to view functions.
📋 What You'll Learn
Create a list called urlpatterns to hold URL patterns
Use the path function to define routes
Map the route '' (empty string) to a view function named home_view
Map the route 'books/' to a view function named books_view
Map the route 'contact/' to a view function named contact_view
💡 Why This Matters
🌍 Real World
Setting up URL routes is essential in Django web apps to connect URLs to the code that handles requests.
💼 Career
Understanding Django routing is a key skill for backend web developers working with Python and Django frameworks.
Progress0 / 4 steps
1
Create the initial URL patterns list
Create an empty list called urlpatterns to hold your URL routes.
Django
Hint
Think of urlpatterns as a list where you will add your routes.
2
Import the path function
Import the path function from django.urls to use for defining routes.
Django
Hint
You need to import path before using it to define routes.
3
Add routes using the path function
Add three routes to urlpatterns using the path function: '' mapped to home_view, 'books/' mapped to books_view, and 'contact/' mapped to contact_view.
Django
Hint
Use path(route, view_function) to add each route.
4
Complete with view function placeholders
Define simple placeholder view functions named home_view, books_view, and contact_view that accept a request parameter. These functions can just return None for now.
Django
Hint
Each view function needs to accept request even if it does nothing yet.
Practice
(1/5)
1. What is the main purpose of the path function in Django?
easy
A. To run background tasks
B. To connect a URL pattern to a view function or class
C. To style HTML pages
D. To create a database model
Solution
Step 1: Understand the role of URL routing
Django uses URL routing to decide which code runs when a user visits a URL.
Step 2: Identify what path does
The path function links a URL pattern to a view function or class that handles the request.
Final Answer:
To connect a URL pattern to a view function or class -> Option B
Quick Check:
URL routing = connect URL to view [OK]
Hint: Remember: path links URLs to code that runs [OK]
Common Mistakes:
Confusing path with database models
Thinking path styles HTML
Assuming path runs background tasks
2. Which of the following is the correct syntax to define a route using path in Django?
easy
A. path('home/', views.home_view, name='home')
B. path = 'home/' views.home_view
C. path('home/' views.home_view')
D. path('home', views.home_view, 'home')
Solution
Step 1: Recall the path function signature
The path function takes at least two arguments: the URL pattern string and the view function. Optionally, a name argument can be added.
Step 2: Check each option's syntax
path('home/' views.home_view') misses comma between arguments, invalid syntax. path = 'home/' views.home_view is invalid syntax. path('home/', views.home_view, name='home') correctly uses path('home/', views.home_view, name='home'). path('home', views.home_view, 'home') has incorrect argument order and missing keyword.
Final Answer:
path('home/', views.home_view, name='home') -> Option A
Quick Check:
Correct syntax includes URL, view, and optional name [OK]
Hint: Use path('url/', view, name='route_name') format [OK]
Step 1: Understand the dynamic part in the URL pattern
The pattern uses <int:id> which means it expects an integer value in that part of the URL.
Step 2: Match each option to the pattern
/article/42/ has an integer 42 and ends with a slash, matching the pattern exactly. /article/abc/ has letters 'abc' which is not an integer. /article/42 misses the trailing slash. /article// has no value where integer is expected.
Final Answer:
/article/42/ -> Option A
Quick Check:
Integer in URL with trailing slash matches [OK]
Hint: Dynamic parts need correct type and trailing slash [OK]
Django requires a type converter like str or int inside angle brackets for dynamic parts, e.g., <str:username>.
Step 2: Analyze the given pattern
The pattern uses <username> without a type converter, which is invalid syntax.
Final Answer:
Missing type converter for <username> -> Option C
Quick Check:
Dynamic parts need type like str or int [OK]
Hint: Always add type before variable in < > [OK]
Common Mistakes:
Leaving out type converter in dynamic URL parts
Forgetting commas between arguments
Assuming any string works as dynamic part
5. You want to create a route that matches URLs like /blog/2024/06/ where the year and month are dynamic integers. Which of the following path definitions is correct?
hard
A. path('blog/<year>/<month>/', views.blog_archive, name='blog_archive')
B. path('blog///', views.blog_archive, name='blog_archive')
C. path('blog//<month>/', views.blog_archive, name='blog_archive')
D. path('blog///', views.blog_archive, name='blog_archive')
Solution
Step 1: Understand the correct syntax for dynamic URL parts
The correct format is <type:variable>, for example <int:year>.
Step 2: Evaluate each option
path('blog///', views.blog_archive, name='blog_archive') uses correct syntax for both year and month as integers. path('blog///', views.blog_archive, name='blog_archive') reverses type and variable order, which is invalid. path('blog//<month>/', views.blog_archive, name='blog_archive') misses type for month. path('blog/<year>/<month>/', views.blog_archive, name='blog_archive') misses types for both year and month.
Final Answer:
path('blog/<int:year>/<int:month>/', views.blog_archive, name='blog_archive') -> Option D
Quick Check:
Use <int:var> for integer dynamic parts [OK]
Hint: Use for integer parts in URL [OK]
Common Mistakes:
Swapping type and variable order
Omitting type converters
Using unknown types
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.