- Django nedir ve hangi işler için seçilir?
- Proje yapısı: proje ve uygulama ayrımı
- Model katmanı ve ORM ile veri tasarımı
- Görünüm, şablon, form ve oturum akışı
- API, arka plan görevleri ve önbellek
- Test, güvenlik ve yayına alma
- Öğrenme yolu ve sık yapılan hatalar
- Mindset programlarında Django
- Sık sorulan sorular
Django ile Web Uygulaması Geliştirme: Adım Adım Yöntem
Django ile web uygulaması geliştirmenin adımları: proje kurulumu, model ve ORM, form, görünüm, API, test ve yayına alma. Yol haritası ve sık hatalar.
Django nedir ve hangi işler için seçilir?
Django, Python ile yazılmış açık kaynaklı bir web çatısıdır. Veritabanı erişimi, kullanıcı doğrulama, form işleme, yönetim paneli ve güvenlik önlemleri gibi her web uygulamasının ihtiyaç duyduğu parçaları hazır getirir. Bu yüzden "piller dahil" bir çatı olarak anılır. Geliştirici altyapıyı baştan kurmak yerine iş kuralına odaklanır.
Django en çok içerik yönetimi, kurumsal iç araçlar, sipariş ve rezervasyon sistemleri, veri odaklı paneller ve mobil uygulamalara servis veren arka uç projelerinde tercih edilir. Hafif bir mikro çatı yeterliyse başka seçenekler düşünülebilir; ancak yönetim paneli, kullanıcı rolleri ve ilişkisel veritabanı gerektiren bir proje için Django hazır ve olgun bir zemin sunar.
Proje yapısı: proje ve uygulama ayrımı
Django'da bir proje, ayarları ve ana yönlendirmeyi taşıyan kabuktur. Proje içinde her biri belirli bir sorumluluğu üstlenen uygulamalar (app) bulunur: örneğin kullanıcılar, ürünler, siparişler. Bu ayrım, kodun büyüdükçe dağılmamasını sağlar.
İlk aşamada yapılacaklar şunlardır: • Python sürümüne uygun bir sanal ortam oluşturup Django'yu bu ortama kurmak • Projeyi başlatmak ve geliştirme sunucusunu çalıştırarak karşılama sayfasını görmek • İlk uygulamayı oluşturup ayar dosyasındaki kurulu uygulamalar listesine eklemek • Gizli anahtar, veritabanı bağlantısı ve hata ayıklama bayrağı gibi ayarları ortam değişkenlerine taşımak
Son madde sık atlanır. Gizli anahtarın depoya yazılması ve hata ayıklama modunun canlıda açık kalması, başlangıç seviyesinde en sık görülen güvenlik hatalarıdır.
Model katmanı ve ORM ile veri tasarımı
Django'nun nesne ilişkisel eşleyicisi (ORM), veritabanı tablolarını Python sınıfları olarak tanımlamanızı sağlar. Her model sınıfı bir tabloya, her alan bir sütuna karşılık gelir. Alan tipleri, zorunluluk kuralları, varsayılan değerler ve ilişkiler (bire çok, çoktan çoğa) bu sınıfta belirtilir.
Model değiştikçe veritabanı şemasını güncelleyen mekanizma göç (migration) dosyalarıdır. Değişikliği önce göç dosyası olarak üretir, sonra veritabanına uygularsınız. Göç dosyaları sürüm kontrolüne girer; böylece ekipteki herkesin ve canlı ortamın şeması aynı geçmişi izler.
Sorgu tarafında en önemli alışkanlık, ilişkili kayıtları döngü içinde birer birer çekmemektir. Bir listede her satır için ayrı bir sorgu atılması "N+1" sorunu olarak bilinir ve sayfaları yavaşlatır. İlişkili nesneleri önceden birlikte getiren sorgu yöntemleri bu sorunu çözer. Sorguları geliştirme sırasında gözlemlemek, performans sorunlarını canlıya çıkmadan yakalamanın en ucuz yoludur.
Görünüm, şablon, form ve oturum akışı
Django'da bir istek, URL yönlendiricisinden geçip bir görünüme (view) ulaşır. Görünüm modelden veriyi alır, şablona (template) yollar ve HTML yanıtı döndürür. Fonksiyon tabanlı görünümler basit işler için, sınıf tabanlı görünümler liste, detay ve düzenleme gibi tekrar eden kalıplar için uygundur.
Form sınıfları doğrulamayı bir noktada toplar: alanın zorunlu olup olmadığı, biçimi, iş kuralına uygunluğu. Kullanıcıdan gelen veriye asla doğrulamadan güvenilmez. Şablon motoru çıktıyı varsayılan olarak kaçışladığı için XSS riski azalır, formlardaki CSRF belirteci ise yetkisiz istekleri engeller.
Kullanıcı girişi, çıkışı, parola yenileme ve izin sistemi hazır gelir. Oturum yönetimi sayesinde giriş yapmış kullanıcıya göre farklı içerik göstermek birkaç satırlık iştir. Yönetim paneli ise modelleri kaydettiğinizde otomatik oluşur ve operasyon ekibinin veriyi koddan bağımsız yönetmesini sağlar.
API, arka plan görevleri ve önbellek
Modern uygulamalar çoğunlukla bir mobil istemciye ya da ayrı bir ön yüze veri sunar. Bu durumda Django, HTML yerine JSON döndüren bir API katmanı olarak çalışır. Serileştirici yapıları, modeli dış dünyaya açılacak biçime çevirir ve gelen veriyi doğrular. Yetkilendirme, sayfalama ve sürümleme kararları bu aşamada netleştirilmelidir.
E-posta göndermek, rapor üretmek ya da dış servise çağrı yapmak gibi uzun süren işler istek-yanıt döngüsünün içinde yapılmaz. Bunlar bir görev kuyruğuna bırakılır ve ayrı işçi süreçleri tarafından yürütülür. Sık okunan ama nadir değişen veriler için önbellek katmanı eklenir; sorgu sonucunu bellekte tutmak veritabanı yükünü belirgin biçimde düşürür. Önbelleği ne zaman geçersiz kılacağınızı baştan düşünmek gerekir, aksi halde kullanıcı eski veriyi görür.
Test, güvenlik ve yayına alma
Django test altyapısı, her test için temiz bir veritabanı kurar ve istemci simülasyonuyla görünümleri uçtan uca çağırmanıza izin verir. Önce iş kuralını taşıyan model ve servis fonksiyonlarını, sonra kritik görünümleri (giriş, ödeme, yetki gerektiren sayfalar) test etmek verimli bir sıradır. Her hata düzeltmesine, hatayı yeniden üreten bir test eklemek regresyonu önler.
Yayına almadan önce çatının dağıtım denetim komutunu çalıştırın; hata ayıklama modu, güvenli çerez bayrakları, izin verilen alan adları ve HTTPS yönlendirmesi gibi ayarları listeler. Statik dosyalar ayrı bir yerden sunulur, uygulama bir uygulama sunucusu arkasında çalışır ve veritabanı yedekleri düzenli alınır.
Canlıda sorun çıktığında günlük kayıtları ve hata izleme aracı olmadan teşhis yapmak çok zordur. Bu yüzden loglama ve izleme, "sonra eklenir" listesine değil ilk yayın kontrol listesine girmelidir.
Öğrenme yolu ve sık yapılan hatalar
Başlangıçta Python'un temelleri (veri yapıları, fonksiyonlar, sınıflar, paket yönetimi) ve HTTP'nin işleyişi yeterli zemindir. Sonra küçük bir yapılacaklar listesi ya da blog uygulaması yazılır; bu uygulama model, görünüm, şablon ve formun birlikte nasıl çalıştığını gösterir. Ardından kullanıcı girişi, API ve test eklenir. Son aşamada dağıtım, önbellek ve görev kuyruğu gibi üretim konularına geçilir.
Sık görülen hatalar: • Tüm mantığı görünüme yığmak; iş kuralını model ya da servis katmanına almamak • Göç dosyalarını elle düzenlemek ya da sürüm kontrolüne eklememek • Yetki kontrolünü yalnızca arayüzde yapıp sunucuda atlamak • Sorgu sayısını izlememek ve liste sayfalarında yavaşlığı geç fark etmek • Test yazmadan ilerleyip değişiklik yapmaktan çekinir hale gelmek
Mindset programlarında Django
Mindset'in Django ile Web Uygulaması Geliştirme eğitimi bu yolu modüller halinde işler: Django mimarisi ve proje kurulumu, model katmanı ve ORM, form, doğrulama ve yönetim paneli, görünüm, şablon ve oturum, API, görev ve önbellek, son olarak test, güvenlik ve yayına alma.
Bu sıra, bir Django projesinin gerçek hayattaki gelişim sırasıyla örtüşür: önce iskelet ve veri, sonra kullanıcıya dönük katmanlar, en son güvenilir biçimde yayına çıkış.
İlgili Mindset programı
Django ile Web Uygulaması Geliştirme
Sık sorulan sorular
Django öğrenmeden önce neyi bilmek gerekir?
Python'un temellerini rahat kullanabilmek yeterlidir: değişkenler, koşullar, döngüler, fonksiyonlar ve sınıflar. HTML ve HTTP'nin istek-yanıt mantığına aşinalık işi kolaylaştırır. Veritabanı bilgisi öğrenirken kazanılabilir, çünkü ORM sorguları çoğu zaman SQL yazmadan yapmanıza izin verir.
Django ile hem arayüz hem API geliştirilebilir mi?
Evet. Django şablonlarıyla sunucu tarafında HTML üretebilir ya da aynı modelleri kullanarak JSON döndüren bir API sunabilirsiniz. Ayrı bir ön yüz çatısı kullanılacaksa Django arka uç görevini üstlenir; küçük projelerde ise şablonlar çoğu zaman yeterlidir.
Django mu Flask mı seçilmeli?
Yönetim paneli, kullanıcı doğrulama, form ve ORM gibi parçalar hazır istiyorsanız Django daha hızlı ilerletir. Flask daha az karar dayatır ve küçük servislerde esneklik sağlar, fakat eksik parçaları kendiniz seçip birleştirirsiniz. Proje karmaşıklaştıkça Django'nun hazır yapıları zaman kazandırır.
Django projesi canlıya nasıl alınır?
Uygulama bir uygulama sunucusu arkasında çalıştırılır, statik dosyalar ayrıca sunulur, gizli ayarlar ortam değişkenlerinden okunur ve hata ayıklama modu kapatılır. Veritabanı göçleri canlıda uygulanır, yedekleme ve günlük izleme kurulur. Dağıtım denetim komutu eksik ayarları gösterir.
Django güvenli bir çatı mıdır?
Django; CSRF koruması, şablonlarda otomatik kaçışlama, SQL enjeksiyonuna karşı parametreli sorgular ve parola özetleme gibi önlemleri varsayılan getirir. Yine de güvenlik ayarlarının doğru yapılması, bağımlılıkların güncel tutulması ve yetki kontrolünün sunucuda uygulanması geliştiricinin sorumluluğundadır.
İlgili rehberler
Kategori: Yazılım Geliştirme