Python Django’da birden fazla URL tanımlamak için urls.py
dosyasında urlpatterns
listesine daha fazla path
veya re_path
fonksiyonunu ekleyebilirsiniz. İşte bir örnek:
from django.urls import path, re_path from . import views urlpatterns = [ path('', views.home, name='home'), path('about/', views.about, name='about'), path('contact/', views.contact, name='contact'), re_path(r'^articles/(?P<category>\w+)/$', views.article_list, name='article_list'), re_path(r'^articles/(?P<category>\w+)/(?P<slug>[-\w]+)/$', views.article_detail, name='article_detail'), ]
Yukarıdaki örnekte, urlpatterns
listesine 5 adet URL tanımlaması eklenmiştir. İlk üçü sabit URL’lerdir (''
, 'about/'
, 'contact/'
) ve bunlar için path
fonksiyonu kullanılmıştır. Son iki URL ise dinamik URL’lerdir ve bunlar için re_path
fonksiyonu kullanılmıştır.
Dinamik URL’ler, re_path
fonksiyonu ile tanımlanır ve düzenli ifadeler (regular expressions) kullanarak URL kalıplarını eşleştirir. Yukarıdaki örnekte, article_list
ve article_detail
görünümleri için iki farklı dinamik URL tanımlaması yapılmıştır. Bu tanımlamalarda (?P<category>\w+)
ve (?P<slug>[-\w]+)
ifadeleri, URL’den yakalanacak parametreleri belirtir.
Görünüm fonksiyonlarını bu URL’lere eşleştirmek için views.py
dosyasında ilgili fonksiyonları oluşturmanız gerekmektedir. Örneğin:
from django.shortcuts import render from django.http import HttpResponse def home(request): return HttpResponse("Ana Sayfa") def about(request): return HttpResponse("Hakkımızda") def contact(request): return HttpResponse("İletişim") def article_list(request, category): return HttpResponse(f"Makaleler - Kategori: {category}") def article_detail(request, category, slug): return HttpResponse(f"Makale Detayı - Kategori: {category}, Slug: {slug}")
Yukarıdaki örnekte, article_list
ve article_detail
fonksiyonları, ilgili dinamik URL’lere eşleşen parametreleri alır ve bu parametreleri kullanarak içerik üretir. Daha karmaşık içerikler için Django şablonlarını veya başka yöntemleri kullanabilirsiniz.
Bu şekilde, Django’da birden fazla URL tanımlayabilir ve ilgili görünüm fonksiyonlarına bağlayabilirsiniz. Her bir URL, farklı bir web adresini temsil eder ve kullanıcının tarayıcısı üzerinden erişebileceği farklı içerikleri sunar.