2445

Python Django ile Sıfırdan İleri Seviye Web Geliştirme

Django Urls & Views

Django dersleri serimizin bu bölümünde urls ve views nedir, öğrenelim.

Django Urls & Views

 

Django uygulamalarına yapılan http taleplerini karşımak için url şeması oluşturmamız gerekiyor.

Django Urls

Projeye eklediğimiz uygulama içerisine urls.py isminde bir dosya eklememiz gerekiyor.

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index),
    path("index", views.index),
    path("posts", views.posts),
]

Burada eklediğimiz her bir path aslında uygulamaya yapılan istek adresini (url) şekillendirdiğimiz yerdir.

Her bir http talebi sonucunda views.py dosyası içerisindeki metota çağrı yapılır.

Örneğin;

http://127.0.0.1:8000/         => index metodu
http://127.0.0.1:8000/index    => index metodu
http://127.0.0.1:8000/posts    => posts metodu

O halde artık uygulamaya yapılan talepleri ilgili metotlara yönlendirebiliyorsak şimdi kullanıcılara bir cevap döndürebiliriz. (Http Response).

Django Views

from django.http.response import HttpResponse

def index(request):
    return HttpResponse("anasayfa")

def posts(request):
    return HttpResponse("blog listesi")

Uygulamayı çalıştırdığımızda artık bir cevap döndürmeye hazırız ancak uygulamadaki urls.py dosyasını proje ana dizinindeki urls.py dosyasına tanıtmamız gerekiyor.

 

from django.urls import path, include

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

Artık projeyi çalıştırdığımızda aşağıdaki linklerimizi karşılayacak bir url şemamız mevcut.

http://127.0.0.1:8000/       => index metodu
http://127.0.0.1:8000/index  => index metodu
http://127.0.0.1:8000/posts  => posts metodu

Projenin url şemasına bir ön ek ekleyebiliriz.

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

Bu durumda tüm linklerin başında blog ön eki olacaktır.

http://127.0.0.1:8000/blog        => index metodu
http://127.0.0.1:8000/blog/index  => index metodu
http://127.0.0.1:8000/blog/posts  => posts metodu