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)
- 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.
- 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.
- 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.
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.
- 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.