Python’a hızlıca göz attıktan sonra(http://pyankara.org/pythona-hizli-bir-bakis) Django, mimarisi ve etkili kod yazma kapsamında bir seri düşünüyorum. Bu serinin ilk yazısı olarak ise Django’yu tanımayı ve “Neden Django?” sorusuna cevap bulmayı amaçlıyorum. 

Django Nedir?

Django MVT(Model View Template) yapısında Python’un tüm avantajlarını kullanabilen hayli genişletilmiş bir web framework’tür. Yazılım tecrübesi olan birinin kısa sürede kolaylıkla kavrayabileceği bir yapısı vardır. Çok sağlam bir dokümantasyonun olması ve webde pek çok kaynağın bulunması önemli bir avantaj sayılır. Sorunlarınıza forumlarda fazlasıyla karşılık bulabilirsiniz.

Her şeyden önce hızlı uygulama geliştirme ve prototip çıkarma amaçlanmıştır.

Genel olarak pek çok diğer framework gibi template sistemi, ORM, url yönetimi, ayarlar / admin paneli vb. bir çok yetenek ile birlikte gelir. İlave olarak ise büyük ve zengin python kütüphanelerini kullanabilir.

Peki framework içerisinde neler var?

Başlıca Öne Çıkan Özellikleri

Çoklu Uygulama

Sorunları daha küçük parçalara bölmek ve uzun vadeli çözümler üretmek programlamanın temel kurallarından biridir. Birden fazla uygulama oluşturarak kodlamak bakım sürecini kolaylaştırır. Kodun yeniden kullanılabilirliği açısından önemli olduğu gibi kod konforu da sağlar. Django’da birbiriyle ilişkili fakat bağımsız çalışabilen uygulamalar oluşturarak çözüme gidilebilir. 

Django ORM ile Veritabanı Modelleme

Etkin modelleme yapısı sayesinde veritabanı nesneleri oluşturmak ve değişiklikler yapmak çok kolay. Veritabanı tasarlamaya, SQL yazmaya gerek kalmadan kodunu yaz, “migrate” et, veritabanı hazır olsun. Bu yapı performans odaklı olamayacağı endişesi doğurmasın. Gayet efektif bir çalışma mantığı var. Hatta projeye göre iş katmanı olarak dahi özelleştirilebilir. 

HTML Template Engine

Çeşitli framework’lerde pek çok farklı HTML template oluşturma yaklaşımı vardır. Django'nun şablon motoru, uygulamanın kullanıcıya bakan katmanını tanımlamak için bir mini dil sunar. Oldukça basit çalışma mantığı ile kolayca html parçaları oluşturulabilir.

Kullanıcı ve Rol Yönetimi

Django özeleştirilebilir built-in kullanıcı modeline sahiptir. Çoğu zaman geliştirme ve test için epey efor harcadığımız authentication sistemi hazır bir modül olarak sunulmuş. Pek çok bilgi ve deneyimden sonra hemen hemen çoğu senaryoya uygun olarak tasarlanmış yapı ufak ayarlarla uygulamaya yerleştirilebiliyor. Böylece her şeyi sıfırdan geliştirmeye ihtiyacınız olmuyor. Ayrıca iş mantığına uygun bir şekilde genişletme şansı da var.

Yönetim Paneli

Yazılım projelerinin başlangıcında iş akışında pek de önemli olmayan tanımlama verilerinin oluşturulması oldukça zaman alır. Özellikle enerji ve motivasyonun yüksek olduğu zaman dilimini bu tür basit işler için harcamak hiç de istenmeyen bir durumdur. Django yönetim paneli, basit ama kullanışlı tasarımıyla içerik ekleme/güncelleme yapıp hareket geçmişi izlemek için çok güzel, pratik bir çözümdür.

Performans Odaklı Yapısı

Django sayfalandırma, serileştirme, veritabanı sorguları gibi bir çok işlemde Laziness yapı uygular. Lazy Loading, bir nesnenin gerekli değilse çağrılmaması anlamına gelir. Özellikle Django ORM QuerySet'lerin çalıştırılması performans yeteneğini göstermesi açısından iyi bir örnek olacaktır. Sorgular aradığınız bilgiyi kullanmak istediğiniz anda çalıştırılırlar. Django ayrıca bir keep_lazy () dekoratörü de sunmaktadır. Bu, herhangi bir nesnenin lazy olarak davranmasını sağlar; yalnızca olması gerektiği zaman değerlendirilir. 

Diğer Özellikler

Statik dosya yönetimi

Güçlü cache yönetimi

Url yönetimi

Log yönetimi

RSS ve Atom yayınları oluşturmak için Syndication Framework

Dil(localization) desteği

Session yapısı

Sayfalandırma(Pagination)

Serileştirme(Serialization)

Güçlü güvenlik yapısı

Nginx, Apache, Gunicorn, WSGI gibi çeşitli uygulama sunucular ile çalışabilmesi

 

Sonuç olarak, baştan sona tam anlamıyla bir web framework Django. Pinterest, Eventbrite, Instagram, Disqus gibi dünya çapında popüler bir çok site kullanıyor. Öte yandan geliştirilmeye de devam ediyor. Geçtiğimiz günlerde Django 2.0 yayınlandı.( http://pyankara.org/django-20-yayinlandi)

Yukarıda sıralanan birçok özellik başlı başına birer makale konusu olabilir. İlerleyen günlerde bazılarını detaylı olarak ele alacağız.