Django

Django URLs

URL routing

Django URLs

URL routing in Django is done through URLconf (URL configuration). Django uses URL patterns to map URLs to views.

Project URLs

The main URL configuration is in the project's urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),
]

App URLs

Create a urls.py file in your app:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('about/', views.about, name='about'),
]

URL Patterns

URL patterns can include parameters:

urlpatterns = [
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

Named URLs

Give your URLs names for easy reference:

urlpatterns = [
    path('', views.index, name='index'),
    path('about/', views.about, name='about'),
]

Use them in templates:

<a href="{% url 'index' %}">Home</a>
<a href="{% url 'about' %}">About</a>

URL Parameters

Access URL parameters in your views:

def article_detail(request, year, month, slug):
    # Use year, month, and slug here
    return HttpResponse(f"Article: {slug} from {year}/{month}")