How to Use path() in Django URLs: Simple Guide
In Django, use the
path() function in your urls.py to map URL patterns to views. It takes a URL pattern string, a view function or class, and an optional name for easy reference. This helps Django know which code to run when a user visits a specific URL.Syntax
The path() function has three main parts:
- route: A string defining the URL pattern (e.g., 'home/').
- view: The function or class that handles the request.
- name (optional): A unique name to refer to this URL pattern elsewhere.
Example: path('about/', views.about, name='about')
python
path(route: str, view: callable, name: str = None)
Example
This example shows how to use path() in a Django app's urls.py to route URLs to views. It includes a simple view that returns a greeting.
python
from django.urls import path from django.http import HttpResponse # Define a simple view function def home_view(request): return HttpResponse('Hello, welcome to the home page!') # URL patterns list urlpatterns = [ path('', home_view, name='home'), # Root URL path('about/', lambda request: HttpResponse('About page'), name='about'), ]
Output
Visiting '/' shows: Hello, welcome to the home page!
Visiting '/about/' shows: About page
Common Pitfalls
Common mistakes when using path() include:
- Forgetting the trailing slash in the route string, which can cause unexpected 404 errors.
- Not importing the view function or class correctly.
- Using
url()instead ofpath()in Django 2.0+ projects (legacy). - Not naming URL patterns, which makes reverse URL lookups harder.
python
from django.urls import path from . import views # Wrong: missing trailing slash urlpatterns = [ path('contact', views.contact_view), # May cause redirect or 404 ] # Right: include trailing slash urlpatterns = [ path('contact/', views.contact_view, name='contact'), ]
Quick Reference
| Parameter | Description | Example |
|---|---|---|
| route | URL pattern string, usually ending with '/' | 'blog/' |
| view | Function or class handling the request | views.blog_home |
| name | Optional unique name for URL referencing | 'blog-home' |
Key Takeaways
Use path() in urls.py to connect URL patterns to views with clear syntax.
Always include a trailing slash in the route string to avoid 404 errors.
Name your URL patterns for easier reverse lookups and maintainability.
Import your views correctly to avoid runtime errors.
Avoid legacy url() function; prefer path() in Django 2.0 and later.