🎸 Django Beginner

What is URL routing in Django?

Answer

Django's URL routing maps URL patterns to view functions/classes using Python regex or path converters. urls.py structure: from django.urls import path, include, re_path from . import views urlpatterns = [ path("", views.home, name="home"), path("articles/", views.ArticleListView.as_view(), name="article-list"), path("articles/<int:pk>/", views.ArticleDetailView.as_view(), name="article-detail"), path("articles/<slug:slug>/", views.article_by_slug, name="article-slug"), path("api/", include("api.urls")), # include another urls.py re_path(r"^legacy/(?P<id>\d+)/$", views.legacy_view), # regex ]. Path converters: <int:id> — integer; <str:name> — string (no slash); <slug:slug> — slug; <uuid:id> — UUID; <path:rest> — any string including slashes. Named URLs: name all URL patterns — use in views and templates: from django.urls import reverse; reverse("article-detail", kwargs={"pk": 1}). In templates: {% url "article-detail" pk=article.pk %}. Include: organize URLs in sub-apps: path("blog/", include("blog.urls")) — all blog app URLs prefixed with /blog/. Namespacing: app_name = "blog" in app's urls.py + include("blog.urls", namespace="blog"){% url "blog:article-detail" pk=1 %} avoids name collisions between apps. Main urls.py: urlpatterns = [path("admin/", admin.site.urls), path("", include("myapp.urls"))].