Web Çatısı Django’ya Hızlı Bir Bakış
Django, Python’da yazılmış ücretsiz ve açık kaynaklı, güvenli ve bakımı kolay, web sitelerinin hızlı bir şekilde geliştirilmesini sağlayan, BSD lisansına sahip bir web çatısıdır(framework). Django, 2005 yılında Kansas’taki Lawrence Journal-World için çalışan iki programcı tarafından geliştirildi. Yıllar içinde bir topluluk projesi haline geldiğinde, gelişme başladı ve Django kullanan web sitelerinin sayısı hızla arttı. Django ile geliştirilmiş ve en çok bilinen uygulamalarından bazıları YouTube, Pinterest, Washington Post, Dropbox, Disqus, Instagram, BitBucket ve Spotify’dır.
Web siteleri -tek bir kişi tarafından tasarlanan basit web siteleri bile- kimlik doğrulama desteği, yönetim ve yönetici panelleri, iletişim formları, yorum kutuları, dosya yükleme desteği ve daha fazlası gibi gelişmiş işlevleri içerebilir. Diğer bir ifadeyle, sıfırdan bir web sitesi oluşturuyorsanız bu bileşenleri kendiniz geliştirmeniz gerekir. Django’da bu bileşenler hazır gelir, yani kayıt ekleme, silme, düzenleme ve güncelleme fonksiyonlarını bünyesinde barındıran dinamik bir yönetim paneli sağlar ve bu sayede sizin yalnızca sitenize uygun şekilde yapılandırmanız gerekir. Özetle Django ile içerik yönetim sistemlerinden sosyal ağ sitelerine, alışveriş sitelerinden mobil uygulamalar için geliştirilecek backend’lere kadar her türlü web uygulamasını geliştirebilirsiniz.
Neden Django Seçmeliyiz?
Django ihtiyacınız olan her şeye sahiptir diyebiliriz. Yaygın kullanım durumları için gerekli kütüphanalerin ve araçların çoğu (Django ORM, kimlik doğrulama, HTTP kütüphaneleri, çoklu site desteği, Django admin, şablon motoru vs) hazır olarak gelir. Güvenlik, ölçeklenebilirlik ve erişilebilirlik noktasında da Django uygulamaları gelişmiş birçok kütüphaneye sahiptir.
Django doğası gereği modülerdir ve eklentileri ile genişletilebilir. Eklentiler, geliştiricilerin bir uygulamaya özel bir özellik eklemesini sağlayan ve özelleştirme için çok fazla alan bırakan yazılım bileşenleridir. Google Haritalar’ı eklemenize, karmaşık izinler oluşturmanıza veya ödemeleri işlemek için Stripe’e bağlanmanıza yardımcı olacak yüzlerce paket vardır. Projenizi gelecekte ölçeklendirmeniz gerekirse, bazı bileşenlerin fişini çekebilir ve bunları mevcut gereksinimlerinizi karşılayan diğerleriyle değiştirebilirsiniz.
Django uygulamaları “batteries included” olmasıyla ünlüdür. Django pilleri aşağıdakileri içeren çok çeşitli konuları kapsar:
- Kimlik doğrulama paketiyle kimlik doğrulama(auth package)
- Yönetici paketi ile arayüz oluşturma(admin package)
- Sessions paketi ile oturum yönetimi(Sessions package)
- Mesaj paketiyle geçici veya oturuma dayalı mesajları yönetme(Messages package)
- Site haritaları paketiyle Google site haritası XML oluşturma(Sitemaps package)
- Postgres paketi ile Postgres özellikleri(Postgres Package)
Django Mimarisi
Django Model-View-Template (MVT) mimarisini kullanmaktadır. adını veriyor. Web uygulamalarında yaygın olarak kullanılan MVC’ye benzer yönleri olsa da Django’da kullanılan bu yapının farklılıkları bulunmaktadır.
Model
Django Model, veritabanı ve verilerle çalışmayı kolaylaştıran ve geliştirme sürecini hızlandıran güçlü bir ORM(Object Relational Mapping) katmanını kullanıyor.
ORM olmadan, geliştiricilerin tabloları kendileri oluşturması ve bazen karmaşık ve takip etmesi zor olan ağır miktarda SQL’e çeviren sorguları veya prosedürleri tanımlamaları gerekir.
ORM katmanı, tüm tablo tanımlarını basit Python kodunda yazmanıza izin verir ve bunu seçilen uygun sorgu diline çevirmekle ilgilenir ve ayrıca CRUD(Create- Read-Update-Delete) işlemlerini kolaylaştırır.
Template
Template katmanı, verileri kullanıcı tarafından gerçekten sunulduğu ve görüntülendiği şekilde ayırmak için kullanılır. Template katmanı, MVC’nin View katmanına benzer.
Django’nun güvenliği çok ciddiye alması Template kısmını etkiler. Örneğin, Rails’de views kısmına ruby kodunu yazmanız gerekir -yapmanız gereken bir şey olduğunu söyleyerek değil – ayrıca değişkenlere değerler atayabilirsiniz. Django’da bunu yapamazsınız, Template kısmında Python kodunu çalıştıramazsınız ve bir değişkene değer atayamazsınız. Daha yalın bir ifadeyle, Django şablon katmanında kod yürütmeyi yasaklar ve yalnızca birçok web güvenlik açığı için basit ama son derece etkili bir çözüm olan görüntüleme mantığına(display logic) erişim sağlar.
View
Django’daki View, iş mantığı katmanıdır. Kullanıcının isteğini işleme koymak ve geçerli bir yanıtı geri göndermekten sorumludur. Modelden verileri alır, her template görüntülenmek üzere belirli verilere erişim sağlar veya önceden veriler üzerinde bir işlem yapabilir. Diğer bir ifadeyle, View HTTP isteklerini kabul eder, Python sınıfları ve yöntemleri tarafından sağlanan iş mantığını uygular ve müşterilerin isteklerine HTTP yanıtları sağlar.
Django Nasıl Çalışır?
Django, kullanıcı isteklerini almasına ve yanıtlamasına yardımcı olan bir dizi bileşenden oluşur.
Modelinizi tasarlamak için models.py
URL tanımlarınızı yazmak için urls.py
Views’leri oluşturmak için views.py
Öncelikle, kod satırlarınızı veritabanı tablolarına ekleyerek ve içeriği yönetmek için önceden oluşturulmuş (tamamen isteğe bağlı) bir yönetim bölümü ekleyerek modelinizi tanımlayan bir models.py dosyası var.
Sonraki bileşen, işlenecek URL(Uniform Resource Locator) modellerini yakalamak için normal ifadeleri kullanan urls.py dosyasıdır.
Asıl süreç veya işlemler, views.py’deki gerçekleşir. Ziyaretçilere sunduğunuz verileri aldığınız yerlerdir.
Bir ziyaretçi Django sayfanıza talep yaptığında şu adımlar gerçekleşir:
- Django oluşturduğunuz URL modellerine danışır ve bilgileri görünüm(view) almak için bu bilgileri kullanır.
- Ardından görünüm(view) dosyasına gider, gerekirse veritabanınızı sorgulayarak isteği işler.
- Görünüm(view), istenen bilgileri şablonunuza(template) aktarır.
- Şablon(template), oluşturduğunuz düzende verileri oluşturur ve sayfayı görüntüler.
Bu yazıda Python diliyle geliştirilen web çatısı Django’nun özelliklerini, bileşenlerini ve basit şekilde nasıl çalıştığını ele aldık.
Kaynaklar: