Django’da MVT Mimarisi: CRUD İşlemleri
Herkese merhaba! Python ile arka yüz (backend) geliştirmeye başladığınızda karşınıza çıkan ilk ve en kapsamlı framework’lerden biri Django…
Django’da MVT Mimarisi: CRUD İşlemleri
Herkese merhaba! Python ile arka yüz (backend) geliştirmeye başladığınızda karşınıza çıkan ilk ve en kapsamlı framework’lerden biri Django oluyor. Ben de derslerimde Django’nun yapısını incelerken başlangıçta “Bu dosyalar ne işe yarıyor, veri nereden gelip nereye gidiyor?” diye epey kafa yormuştum. Aslında işin içine girince her şeyin temelinde harika ve düzenli bir yapının yattığını görüyorsunuz: MVT mimarisi.
Bu yazıda, Django’nun kalbi olan MVT (Model-View-Template) yapısının ne olduğunu, bileşenlerinin görevlerini ve web projelerinin olmazsa olmazı olan CRUD (Ekleme, Listeleme, Güncelleme, Silme) işlemlerini, adım adım kuracağımız mini bir “Kitap Yönetim Sistemi” üzerinden kendi anladığım şekliyle anlatacağım.
Django MVT Mimarisi Nedir?
Web geliştirme dünyasında projedeki kodları düzenli tutmak, karmaşayı önlemek ve takım çalışmasını kolaylaştırmak için belli mimariler kullanılır (çoğu dilde en bilineni MVC’dir). Django ise olaylara kendi pratik tarzıyla yaklaşıyor ve MVT (Model-View-Template) yapısını benimsiyor.
Buradaki temel mantık aslında çok basit: Veritabanı işlemleri, arka plandaki hesaplamalar ve kullanıcının ekranda gördüğü tasarım birbirine karışmasın, hepsi ayrı dosyalarda kendi işini yapsın. Böylece projeyi yönetmek çok daha kolay hale geliyor.
Model, View ve Template Bileşenleri
Bu üç temel bileşeni bir restoranın işleyişine benzeterek çok daha rahat anlayabiliriz:
- Model (Veritabanı / Kiler): Uygulamamızın veritabanı ile konuştuğu kısımdır. İçeride hangi verilerin tutulacağını, bu verilerin türünü (metin mi, sayı mı, tarih mi?) burada Python kodlarıyla tanımlıyoruz. Yani uzun uzun karmaşık SQL sorguları yazmak yerine Python sınıfları (class) oluşturuyoruz ve Django bunu arka planda veritabanı tablolarına dönüştürüyor. Bunu restoranın deposundaki malzemeler gibi düşünebiliriz.
- View (İş Mantığı / Aşçı): Sistemin beynidir. Kullanıcıdan bir istek geldiğinde bu isteği karşılar, ne yapılması gerektiğine karar verir. Gerekirse Model’e gidip “bana şu verileri getir” der, o veriyi işler ve son kullanıcıya gösterilmesi için Template’e gönderir. Kısacası kilerdeki malzemeleri alıp yemeği hazırlayan aşçıdır.
- Template (Kullanıcı Arayüzü / Sunum Tabağı): Kullanıcının tarayıcıda gördüğü her şeydir. HTML, CSS dosyalarımız burada yer alır. View’dan gelen dinamik veriler, Django’nun özel şablon etiketleri (template tags) sayesinde bu statik HTML’in içine yerleştirilir ve görsel bir sayfaya dönüşür. Bu da hazırlanan yemeğin müşterinin önüne şık bir şekilde geldiği tabaktır.
- Django’da Request–Response (İstek-Cevap) Süreci Nasıl İşler?
- MVT bileşenlerinin ne olduğunu anladık, peki bir kullanıcı sitemize girdiğinde bu üçlü nasıl haberleşiyor? Bunu adım adım bir senaryoyla anlatmak en iyisi. Diyelim ki sitemizdeki “Kitaplar” linkine tıkladınız:
- URL Yönlendirmesi (urls.py): Yaptığınız bu tıklama (Request/İstek) ilk olarak Django’nun kapıcısı diyebileceğimiz URL dosyasına gelir. Sistem gelen adrese bakar ve “Hımm, kullanıcı kitapları görmek istiyor, bu işe kitapları_getir isimli View fonksiyonu bakıyor” diyerek isteği oraya yönlendirir.
- View Devreye Girer (views.py): View fonksiyonu isteği teslim alır. “Benim kitapları göstermem lazım ama kitaplar nerede? Veritabanında!” der ve Model ile iletişime geçer.
- Model Veriyi Çeker (models.py): View’dan gelen talep üzerine Model, veritabanına gider ve kayıtlı olan tüm kitapları alıp View’a geri getirir.
- Template ile Buluşma (HTML): View, elindeki kitap verilerini alır ve kullanıcıya düz metin olarak göstermek yerine “Bunu güzel bir tasarımla sunmalıyım” diyerek Template dosyasına (örneğin kitaplar.html) gönderir.
- Kullanıcıya Sunum (Response/Cevap): Django, HTML şablonunun içine kitap verilerini yerleştirir ve ortaya çıkan o güzel web sayfasını kullanıcının tarayıcısına geri yollar. İşte bu tüm sürece Request-Response döngüsü diyoruz.
Gelelim Benim Konuma: CRUD İşlemleri Nedir?
MVT yapısını anladıktan sonra, bu yapıyı kullanarak neler yapabileceğimize bakmanın zamanı geldi. Benim bu projede odaklandığım konu CRUD işlemleri.
CRUD; Create (Oluşturma), Read (Okuma/Listeleme), Update (Güncelleme) ve Delete (Silme) kelimelerinin baş harflerinden oluşan, veritabanı yönetiminin en temel 4 işlemidir. Hangi dili veya framework’ü kullanırsanız kullanın, bir uygulamanın temel işlevi bu 4 adıma dayanır.
Bunu kuracağımız mini “Kitap Yönetim Sistemi” üzerinden düşünürsek:
- Create (Ekleme): Sisteme yeni bir kitabın adını ve yazarını kaydetmek.
- Read (Listeleme): Kaydettiğimiz bu kitapları bir sayfada alt alta listeleyip görebilmek.
- Update (Güncelleme): Yanlış yazılmış bir kitap ismini veya yazar bilgisini sonradan değiştirmek.
- Delete (Silme): Artık sistemde olmasını istemediğimiz bir kitabı veritabanından tamamen kaldırmak.
- Mini Uygulamamız: Kitap Yönetim Sistemi
- İşin mantığını kavradıktan sonra, teorik bilgileri pratiğe dökmek için basit bir “Kitap Yönetim Sistemi” projesi başlattım. Projede
library_projectadında ana bir dizin ve CRUD işlemlerini yöneteceğimbooksadında bir uygulama (app) oluşturdum. - İşte adım adım yaptıklarım ve kodlarım:
- 1. Model Oluşturma (Veritabanı) Öncelikle
models.pydosyasındaKitapadında bir sınıf oluşturdum. Bir kitabın nesi olur? Adı ve yazarı. Sadece bu iki veriyi tutacak basit bir tablo tasarladım.

- 2. View Fonksiyonları (İş Mantığı)
views.pydosyasına geldiğimde, öğrenmesi ve okuması en kolay yöntem olan Function-Based Views (FBV - Fonksiyon Tabanlı Görünümler) yapısını kullandım. kitap_listesifonksiyonu ile veritabanındaki tüm kitapları çektim.kitap_eklefonksiyonu ile formdan gelen yeni kitap verilerini kaydettim.kitap_guncellevekitap_silfonksiyonlarıyla da mevcut kayıtlar üzerinde değişiklik yapma imkanı sağladım.


3. Terminal ve Veritabanı İşlemleri Kodlarımı yazdıktan sonra Django’nun bu Python kodlarını SQL tablolarına dönüştürebilmesi için terminalde makemigrations ve migrate komutlarını çalıştırdım.
Veritabanı tabloları oluştuktan sonra da python manage.py runserver komutuyla projemi yerel sunucumda ayağa kaldırdım.

4. Template (Arayüz) ve Sonuç Son olarak templates klasörü altında sade HTML dosyaları oluşturdum. python manage.py runserver komutuyla projemi ayağa kaldırdığımda karşıma çıkan sonuç şuydu:



Sonuç
Bu ödev süreci sayesinde Django’nun MVT mimarisinin kağıt üzerinde durduğu gibi karmaşık olmadığını, aksine her şeyin birbiriyle tıkır tıkır çalışan bir saat mekanizması gibi işlediğini çok net anladım. Model veriyi tutuyor, View o veriyi işliyor ve Template bize güzelce sunuyor. CRUD işlemleri de bu yapının üzerinde harika bir şekilde şekilleniyor.
Projenin kaynak kodlarına GitHub hesabımdan ulaşabilirsiniz: https://github.com/murtibad/25370201029_Murat_Tokac_Django_CRUD
Kaynakça
- Sakarya Uygulamalı Bilimler Üniversitesi, Arka Yüz Yazılım Geliştirme Ders Notları
- Django Resmi Dokümantasyonu (docs.djangoproject.com)
- BTK Akademi, Python ile Web Programlama Eğitimleri
메타데이터
- post_id
- 3c85d90a66da
- slug
- djangoda-mvt-mimarisi-crud-i̇şlemleri-3c85d90a66da
- url
- https://medium.com/@murat.16-16/djangoda-mvt-mimarisi-crud-i%CC%87%C5%9Flemleri-3c85d90a66da
- canonical_url
- https://medium.com/@murat.16-16/djangoda-mvt-mimarisi-crud-i%CC%87%C5%9Flemleri-3c85d90a66da
- author_url
- https://medium.com/@murat.16-16
- status
- ok
- fetched_at
- 2026-06-15 20:49:13