Skip to main content

Django Views (Görünümleri) Nasıl Oluşturulur ve URL'lere Nasıl Eşlenir?

Bu rehberde, Django'da Görünüm (View) fonksiyonları oluşturmayı, URL yapılandırmalarını bağlamayı ve veritabanından dinamik veri çekerek bu verileri web sayfasında göstermeyi adım adım öğreneceksiniz. Django'nun temel bileşenlerinden biri olan Görünümler ile web uygulamanızdaki içerikleri dinamik hale getirebilirsiniz.


1. Görünüm (View) Fonksiyonlarını Tanımlama

Görünüm fonksiyonları, web isteğini alır ve buna karşılık gelen HTTP yanıtını (genellikle HTML sayfası) döndürür. Django, bu işlevi model verilerini almak ve şablonlar ile kullanıcıya sunmak için kullanır.

1.1 Sanal Ortam ve Dizin Hazırlığı

Sanal ortamınızı etkinleştirip uygulama dizinine geçerek çalışma ortamınızı hazırlayın.

cd ~/my_blog_app
. env/bin/activate
cd blog/rabisu_blog

1.2 views.py Dosyasını Düzenleme

Görünüm fonksiyonlarının bulunduğu views.py dosyasını açarak basit metin yanıtları döndüren iki temel fonksiyon tanımlayacağız.


nano views.py

Aşağıdaki kodu ekleyin:


from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse('Merhaba, anasayfaya hoş geldiniz.')

def individual_post(request):
return HttpResponse('Burası bireysel yazıların gösterileceği yerdir.')

Bu fonksiyonlar, ana sayfa ve yazılar için basit HTTP yanıtları döndürür.


2. URL Yapılandırmasını (URLconf) Eşleme

Şimdi, oluşturduğumuz bu fonksiyonları belirli URL yollarına bağlayalım. Django'da URL yapılandırmaları (urls.py dosyasında) yapılır.

2.1 Uygulama URLconf Dosyasını Düzenleme

Uygulamanın urls.py dosyasını açın ve aşağıdaki gibi URL desenlerini ekleyin.


nano urls.py

Kod:


from django.urls import path
from . import views

urlpatterns = [
path('', views.index, name='index'), # Ana sayfa
path('post/', views.individual_post, name='individual_post') # Blog yazıları
]

Bu kod, ana sayfa için / ve yazılar için /post/ URL'lerini oluşturur.

2.2 Ana Proje URLconf Dosyasını Güncelleme

Projenin ana urls.py dosyasını açarak, uygulamanın URL yapılandırmasını (URLconf) dahil edin.


cd ~/my_blog_app/blog/blog
nano urls.py

Kod:


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

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('rabisu_blog.urls')) # Uygulama URL'lerini dahil et
]

Bu kod, rabisu_blog uygulamasının URL yapılandırmasını ana projeye dahil eder.


3. Dinamik Veri Çekme ve Gösterme

Admin paneli aracılığıyla eklediğimiz blog yazılarından verileri çekip dinamik olarak web sayfasında gösterelim.

3.1 Admin Panelinden Kayıt Ekleme

Öncelikle admin paneli üzerinden yeni bir blog yazısı ekleyin. Sunucuyu çalıştırıp admin paneline giriş yapın:


http://your-server-ip:8000/admin/rabisu_blog/post/add/

Yeni bir yazı ekleyin ve kaydedin.

3.2 views.py Dosyasını Güncelleme

Artık, veritabanından dinamik veri çekmek için views.py dosyasını güncelleyeceğiz.


cd ~/my_blog_app/blog/rabisu_blog
nano views.py

Kod:


from django.shortcuts import render
from django.http import HttpResponse
from .models import Post

def index(request):
return HttpResponse('Merhaba, anasayfaya hoş geldiniz.')

def individual_post(request):
recent_post = Post.objects.get(id__exact=1) # ID'si 1 olan yazıyı çek
return HttpResponse(f'{recent_post.title}: {recent_post.content}') # Yazı başlığı ve içeriğini göster

Bu kod, Post modelinden veritabanındaki yazıyı çeker ve bu yazıyı web sayfasında gösterir.


3.3 Sunucuyu Başlatma

Sunucuyu başlatın ve tarayıcıda http://your-server-ip:8000/post/ adresine gidin. Burada veritabanından çekilen yazının başlığı ve içeriği görünecektir.


cd ~/my_blog_app/blog
python manage.py runserver 0.0.0.0:8000

4. Sıkça Sorulan Sorular (SSS)

  1. Django'da Görünüm (View) fonksiyonları nedir?

Görünüm fonksiyonları, web isteklerine (request) yanıt veren ve uygun HTTP yanıtlarını (response) döndüren Python fonksiyonlarıdır. Genellikle veritabanı işlemleri ve şablonlarla etkileşime girer.

  1. URLconf nedir?

URLconf, Django'daki URL yönlendirmelerini tanımlar. Yani, hangi URL'nin hangi görünüm fonksiyonu ile eşleneceğini belirler.

  1. HttpResponse yerine render kullanmak ne zaman daha uygun olur?

HttpResponse, düz metin döndürürken, render fonksiyonu HTML şablonları ve verilerle dinamik içerikler döndürmek için kullanılır.

  1. Post.objects.get(id__exact=1) doğru bir yöntem midir?

Evet, ancak bu yöntem sadece ID'si 1 olan bir yazıyı çekmek için uygundur. Canlı uygulamalarda genellikle URL parametreleri ile dinamik bir şekilde veri çekilir.

  1. Django'da URL yönlendirmesi nasıl yapılır?

URL'ler, urls.py dosyasında path() fonksiyonu ile yönlendirilir. Her URL için uygun bir görünüm fonksiyonu tanımlanır.


5. Sonuç

Bu rehberde Django'da temel görünümleri oluşturmayı, URL yapılandırmasını yapmayı ve veritabanından dinamik veri çekmeyi öğrendiniz. Artık Django uygulamanızda içerik yönetimi ve dinamik sayfa görüntüleme işlemlerini rahatlıkla gerçekleştirebilirsiniz. Geliştirdiğiniz projeyi Rabisu Bulut sanal sunucusunda yayına alarak daha verimli bir şekilde yönetebilirsiniz.