Django
Beginner
1 min read
URL Patterns and path() vs re_path()
Example
# blog/urls.py — URL patterns
from django.urls import path, re_path
from . import views
app_name = 'blog' # sets the application namespace
urlpatterns = [
# path() with typed converters
path('', views.PostListView.as_view(), name='post-list'),
path('<int:pk>/', views.PostDetailView.as_view(), name='post-detail'),
path('<int:pk>/edit/', views.PostUpdateView.as_view(), name='post-update'),
path('<int:pk>/delete/', views.PostDeleteView.as_view(), name='post-delete'),
path('create/', views.PostCreateView.as_view(), name='post-create'),
path('tag/<slug:tag_slug>/', views.PostListView.as_view(), name='posts-by-tag'),
# re_path() for a date-based archive URL
re_path(
r'^archive/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',
views.PostArchiveView.as_view(),
name='post-archive',
),
]
# mysite/urls.py — root URL configuration
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls', namespace='blog')),
path('accounts/', include('django.contrib.auth.urls')),
]
# Generating URLs in Python
from django.urls import reverse
url = reverse('blog:post-detail', kwargs={'pk': 42})
# -> '/blog/42/'
# Generating URLs in templates
# {% url 'blog:post-detail' pk=post.pk %}
# {% url 'blog:posts-by-tag' tag_slug=tag.slug %}
Related Resources
Django Reference
Complete tag & property list
Django How-To Guides
Step-by-step practical guides
Django Exercises
Practice what you've learned
More in Django