Django Nedir? Python Framework’u Genel Bakış

Django, Instagram, Pinterest, Mozilla ve Eventbrite dahil olmak üzere her türlü teknoloji şirketinde kullanılmaktadır. Bu şirketler Django’yu aktif olarak kullanır ve gelişimine yatırım yapar. StackOverflow’a göre, Django, 2020 yılında en çok aranan 4. web framework’üdür.

Django Nedir?

Django, hızlı geliştirme, temiz kod ve “kendini tekrar etme” (DRY) ilkesini teşvik eden popüler bir Python açık kaynaklı web geliştirme çerçevesidir. Web geliştirmeyi basitleştiren araç ve kütüphaneler sağlayarak geliştiricilerin daha az çabayla web uygulamaları oluşturmasını kolaylaştırır. Django sağlamlığı ile bilinir ve kodun verimli bir şekilde düzenlenmesine yardımcı olan Model-View-Controller (MVC) mimari modelini takip eder.

Django’nun bazı temel özellikleri aşağıdakileri içerir:

  • Veri tabanlarını yönetmek için ORM (nesne-ilişkisel eşleme).
  • İçerik yönetimi için yerleşik yönetici arayüzü.
  • Kimlik doğrulama ve güvenlik özellikleri.
  • Temiz ve düzenli URL’ler için URL yönlendirme.
  • Django şablon dili ile şablon oluşturma için kapsamlı destek.
  • Ölçeklenebilirlik ve yüksek trafik yüklerini idare etme yeteneği.
  • Django hem yeni başlayanlar hem de ileri düzey geliştiriciler için harika bir seçenektir. Öğrenmesi ve yüklemesi çok kolaydır ve herhangi bir harici araç veya kütüphane gerektirmez. En basitinden en karmaşığına kadar her tür web veya mobil uygulama oluşturmak için kullanılabilir.
  • Esneklik, Django’yu web siteleri oluşturmak için bu kadar popüler bir seçim yapan şeydir. Öğrenmesi kolaydır ve çok çeşitli araç ve kütüphanelerle genişletilebilir. Ayrıca bir web sitesi oluşturmak çok hızlıdır.
  • Django tarafından sağlanan bir diğer önemli güvenlik özelliği de hangi şablonların hangi modellere erişebileceğini tanımlayabilmektir. Bu, “model bağlama” olarak bilinir ve belirli bir şablonun belirli bir model türüne erişimini kısıtlamanıza olanak tanır. Model bağlamaya ek olarak Django, oturum yönetimi, belirli bir sayfayı hangi modellerin görüntüleyebileceğinin kısıtlanması, otomatik nesne oluşturma ve daha fazlası gibi çok sayıda başka güvenlik özelliği sağlar. Django, verilen bir şifre için bir hash oluşturmak için yerleşik password_hash() fonksiyonunu kullanır. Bu fonksiyon tek bir tamsayı parametresi alır. Parolanın hashlenmesi ve ardından hash sonucunun alınıp parolanın uzunluğuyla çarpılarak nihai değerin elde edilmesiyle sabit uzunlukta bir değer oluşturulur. Bu, kötü niyetle oluşturulan hash’lere karşı bir güvenlik sağladığı ve özel hash fonksiyonlarının oluşturulmasına izin verdiği için iyi bir uygulamadır.
  • Django’nun paylaşılmayan mimarisi, kodu yeni sunuculara taşıyarak ölçeklendirmenize de olanak tanır. Mimarinin her bir parçası diğerlerinden bağımsız olduğu için, sunucu düzeyinde yeni donanım ekleyerek ölçek büyütmek kolaydır. Sonuç olarak, kodu yeni bir sunucuya taşıyarak ölçek büyütmek zorunda kalmadan hızlı bir şekilde kapasite ekleyebilirsiniz. Aynı durum, kodu mimarinin bir bölümünden diğerine taşımanız gerektiğinde de geçerlidir. Django’nun bileşen tabanlı tasarımını kullanarak hangi kodun aktarılması, hangisinin yalnız bırakılması ve hangisinin paylaşılması gerektiğini belirleyerek kodu kolayca değiştirebilirsiniz.
  • Bu kalıplar, belirli bir uygulamada kullanılan tüm kodlara benzer bir ad alanı verilmesini ve aynı kodun farklı uygulamalar için kullanılmasını gerektirerek kodun daha net ve sürdürülebilir olmasını sağlar. Ayrıca, geliştiricilerin kötü kodlama uygulamalarını belirlemek ve gelecekteki sürdürülebilirlik sorunlarını önlemek için kullanılan Django kodlama standartlarına veya yönergelerine uymaları beklenir. Kodlama standartları, anlaşılması, test edilmesi ve gerektiğinde daha sonra değiştirilmesi kolay kod yazmayı teşvik eder. Bu, özellikle büyük miktarda kod yazıldığında ve birden fazla proje arasında veya aynı proje içinde paylaşıldığında önemlidir.
  • Bir Django projesine başlamanın birçok yolu vardır. Kullanıma hazır birçok paketten birini kullanabilir veya kendi paketinizi oluşturabilirsiniz. En popüler yol, kullanıma hazır birçok Django paketinden birini kullanmaktır. Bir diğer popüler yol ise sıfırdan oluşturmaktır. Django ile küçük, kullanışlı uygulamalar oluşturmaya odaklanmak daha iyi bir yaklaşımdır.

Django Mimarisi

Her web sitesinin üç ana kod bölümü vardır: giriş mantığı, iş mantığı ve kullanıcı arayüzü mantığı.

Kodun yerine getirmesi gereken belirli işlevler vardır, girdi verisi ise veri kümesi ve veri tabanında nasıl depolanacağı ile ilgilidir. Bu sadece girdinin veri tabanına istenen formatta iletilmesi ile ilgilidir. İş mantığı, sunucunun HTML veya başka bir formattaki çıktısını kontrol eden şeydir. HTML ve CSS, bunun için yazılan sayfalardır. Fakat artık benimsenen yaklaşım farklıdır. İçerik birden fazla kaynaktan toplanır ve ayrı dosyalarda saklanır. Bu, sayfa akışı olarak bilinir ve web sitesi içeriği için yaygın olarak kullanılan bir yaklaşımdır. Web sayfasının kodu tek bir dosyada ve HTML, CSS ve JS ayrı dosyalarda saklanır. İçerik sunucudan aktarılır ve tarayıcıda işlenir. Günümüzde yazılım geliştirmenin büyük çoğunluğu, geliştiricilerin aşina olduğu JavaScript, HTML, CSS ve JAVA gibi web teknolojileri kullanılarak yapılmaktadır. Yazılım geliştirmenin çoğunun bu teknolojiler kullanılarak yapılması şaşırtıcı gelebilir.

MVC’de bir model, görünüm ve denetleyici vardır. Model, web sitenizin/uygulamanızın üzerinde çalışacağı bilgilerdir. Görünüm, modelin web sitenizdeki/uygulamanızdaki sunumudur. Son olarak denetleyici, görünüm ve modeli birbirine bağlayan koddur. Çoğu durumda denetleyici, kodunuzu yazacağınız yerdir.

Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.

Model

Model, veriyle ilgili tüm görevleri yerine getirmekten sorumludur. Veri tabanındaki bir tablo, bir JSON dosyası ya da başka herhangi bir şey olabilir. Model, verileri depolandığı yerden alır ve ardından görünüme göndermeden önce işler. Modelin değiştirilmesi gerekiyorsa, bu tek bir yerde yapılır. Web tabanlı bir uygulamada model, verilerin bir formattan diğerine dönüştürüldüğü yerdir. Örneğin, bir veri kümesini belirli bir formatta alan ve daha sonra görünüme göndermeden önce başka bir formata dönüştüren bir modelimiz olduğunu varsayalım. Herhangi bir web sitesi oluşturmak istiyorsanız, bir tür veri tabanınız olmalıdır, çünkü basit bir blog yazısı oluşturuyor olsak da, kullanıcı girdisini kabul etmeniz gerekir. Model, Django’nun mimarisinde iş mantığını içeren bir bileşendir.

Bilgi akışı şu şekildedir: Herhangi bir web sitesine kaydolduğunuzda, kaydol butonuna tıklarsınız. Kaydol butonuna tıkladığınızda, denetleyiciye bir istek gönderilir. Daha sonra kontrolör modeli çağırır ve ondan parametre olarak alınan formdaki mantığı uygulamasını ister. Model daha sonra kendi mantığını uygular ve denetleyiciye bir yanıt verir. Denetleyici daha sonra yanıtı istemci olan size iletir.

Görünüm

Django mimarisindeki view bileşeni, model bileşeninden gelen verileri görüntülemek için kullanılır. Ayrıca kullanıcıdan veri toplamak ve bunu bir form girişi olarak modele göndermek için de kullanılabilir. Bu şekilde, view bileşeni UI mantığını içerir. UI mantığı örnekleri, animasyonlar, görselleştirmeler ve diğer etkileşimli öğeler için JavaScript kodunda bulunabilir. Örneğin, bir ürüne tıklar ve ardından ürün detay sayfasına giderseniz, oluşturulan yeni web sayfası ürün detay görünümüdür. Benzer şekilde, bir kategoriye tıklar ve ardından kategori görünümüne giderseniz, oluşturulan yeni web sayfası kategori görünümüdür. Görünümleri kullanarak aynı davranışı kendi web sitenizde de kopyalayabilirsiniz.

Kontrolör

Kontrolör hangi görünümün görüntüleneceğine karar verdiğinden, görünümün modelini manipüle etme gücüne sahiptir. Bu şekilde, görünümün modeline herhangi bir mantık ve kural uygulayabilir. Denetleyici ayrıca görünümün nasıl görüntüleneceğini ve kullanıcı girdisine nasıl yanıt verileceğini de belirler. Bu amaçla görünümün modelini de manipüle edebilir. Görünümün modeli veri modelinin bir soyutlaması olduğundan, denetleyici görünümün modelini istediği şekilde manipüle edebilir. Ayrıca modeli manipüle etmemeyi, bunun yerine verileri olduğu gibi görüntülemeyi de seçebilir. Bu, modelin verilerinin hassas olduğu ve tam olarak olduğu gibi görüntülenmesi gereken durumlarda kullanışlıdır. Kontrolörün ne zaman ve neyin görüntülenmesi gerektiğine karar veren mekanizma olduğunu söyleyebiliriz. Kontrolörler kodu DRY, sürdürülebilir ve ölçeklenebilir tutmada çok yardımcı olur.

Django MTV Modeli

Web tarayıcısı sayfayı ister. Sayfa alındığında, veriler sayfadaki yer tutucularda görüntülenir. Ardından yanıt istemciye geri gönderilir, oturum sonlandırılır ve birkaç dakika boyunca başka istekler engellenir. İstemci bir dahaki sefere aynı URL’ye göz attığında, uygulama hazır olur ve yeni bir oturum başlar. Geleneksel web uygulamaları bu şekilde çalışır. Geleneksel web uygulamalarının değiştirilmesi zordur. İş gereksinimleri değişirse, uygulama genellikle değiştirilemeyecek kadar büyüktür. Pazarlama gereksinimleri değişirse, uygulama genellikle değiştirilemeyecek kadar büyüktür.

Bir Django web uygulamasında bu adımların her birini işlemek için ayrı dosyalar kullanılır.

  • URL’ler: Görünüm fonksiyonları, her bir kaynağı ayrı ayrı işleyerek HTTP isteklerini daha verimli bir şekilde ele almak için kullanılabilir. Öte yandan URL’ler tek bir fonksiyon aracılığıyla toplu olarak işlenebilir. Görünüm fonksiyonları URL’leri ayrı ayrı işleyerek her bir kaynağı ayrı ayrı ele alabilir. Görünüm fonksiyonları ayrıca bir URL’deki belirli değişmez dizeleri veya karakterleri eşleştiren ve bunları veri olarak aktaran bir URL eşleyiciden veri alabilir.
  • Görünüm: Görünüm bir veri tabanına, uygulamaya veya başka bir bilgi kaynağına dayalı olabilir ve genellikle HTTP isteklerini alan ve yanıtlayan koddan ayrıdır. Bir uygulamaya HTTP isteği gönderdiğinizde, bu isteği işleyen kod, uygulama koduyla aynı fiziksel makinede olabilir. Bu durum yüksek hacimli istekler için geçerli olmayabilir. Örneğin, bulut altyapısı üzerinde çalışan bir web uygulamasının tek bir fiziksel makine üzerinde çalışan tek bir sanal ana bilgisayarı olabilir. Bu durumda, istekleri işleyen kod, istekleri alan kodla aynı fiziksel makinede olmayabilir.
  • Modeller: Veri yapısı ve veri tabanı uygulama metodolojileri bir model tarafından tanımlanır.
  • Şablonlar: Bir HTML şablon metin dosyası, gerçek içeriği temsil eden yer tutucu metinle birlikte bir dosyanın (örneğin bir HTML sayfası) yapısını veya düzenini tanımlar. Bir model, bir HTML sayfasını bir görünümden gelen verilerle dinamik olarak doldurmak ve bir görünüm oluşturmak için kullanılabilir. Bir şablon sadece HTML değil, her türlü dosyanın yapısını tanımlamak için kullanılabilir.

Django’nun Özellikleri

Django’yu web uygulaması geliştirme için ideal bir çerçeve haline getiren bazı özellikler aşağıdakileri içerir:

  • Süper hızlı: Django geliştirme son derece hızlıdır. Fikirleriniz çok hızlı bir şekilde bir ürün şeklini alabilir.
  • Tamamen yüklü: Django, kullanıcı kimlik doğrulaması, yetkilendirme ve içerik yönetimi gibi yaygın görevleri yerine getirmek için entegre edilebilecek düzinelerce projeye sahiptir.
  • Çok yönlüdür: Django, CMS’lerden e-ticaret uygulamalarına ve isteğe bağlı dağıtım platformlarına kadar neredeyse her türlü proje için kullanılabilir.
  • Güvenli: Django ayrıca siteler arası istek sahteciliği, siteler arası komut dosyası oluşturma, SQL enjeksiyonu ve clickjacking gibi yaygın güvenlik sorunlarını önleme desteğine sahiptir.
  • Ölçeklenebilir: Django web siteleri yüksek trafik taleplerini karşılamak için hızlı ölçeklenebilir.

Django’nun Avantajları

Django kullanmanın diğer olası çözümlere göre çeşitli avantajları vardır. Bunlar aşağıdaki şekildedir:

  • Hızlı: Django’nun kurulum şekli sayesinde çok hızlı bir şekilde işe başlayabilirsiniz. Uygulamanın mimarisini zaten aklınızda tutuyorsanız, bir Django uygulaması kurmak gerçekten hiç zaman almaz.
  • Ölçeklenebilir: Django büyük bir projenin trafik taleplerini karşılayabilir.
  • Tam yüklü: Kimlik doğrulama, içerik yönetimi veya sorgulama gibi standart web uygulaması görevlerini yerine getirmek için kullanabileceğiniz her türlü paket vardır. Hepsi önceden hazırlanmıştır.
  • Çok yönlüdür: Django oldukça çok yönlüdür. Her türlü uygulama için kullanabilirsiniz, Django ile yapabileceklerinizin sınırı yoktur.
  • Güvenli: Django’nun siteler arası istek sahteciliği, siteler arası komut dosyası oluşturma, clickjacking ve SQL enjeksiyonu için yerleşik güvenlik protokolleri ile yaygın güvenlik risklerinin önüne geçilir.
  • SEO için optimize edilmiştir: Django, bir web sitesini IP adresleri yerine URL’ler aracılığıyla koruyarak SEO’yu kolaylaştırır.
  • Dokümantasyon: Django’nun dokümantasyonu piyasadaki en iyilerden biridir. Teknik geçmişi olmayan kişiler için bile okunması kolaydır.

Django’nun çok yönlülüğü sayesinde projenizin ihtiyaçlarını kesinlikle karşılayabilirsiniz. Spotify, Pinterest, National Geographic ve Dropbox gibi şirketler iş modelleri için Django’yu kullanır.

Django Ne İçin Kullanılır?

Django’nun modeli, veri tabanı ve verilerle uğraşmayı basitleştiren ve geliştirme sürecini hızlandıran güçlü bir ORM katmanından yararlanır.

Nesne İlişkisel Eşleme olmadan, geliştiricilerin tabloları kendilerinin oluşturması ve sorguları ya da prosedürleri tanımlaması gerekirdi ki, bu da bazen karmaşık ve takip edilmesi zor olan yüklü miktarda SQL anlamına gelirdi.

ORM katmanı, tüm tablo tanımlarını basit Python koduyla yazmanıza olanak tanır ve bunu seçilen uygun sorgu diline çevirmekle ilgilenir ve ayrıca CRUD işlemlerini kolaylaştırır.

Aslında, geliştiricinin karmaşık SQL’i tamamen veya neye çevrildiğini bilmesi gerekmez, ancak SQL’i anlamanın daha iyi ve daha hızlı sorgular yazmanıza ve web sitenizi daha güvenli hale getirmenize izin vereceğini bilmeniz gerekir.

Diğer çerçevelerin aksine, modellerin hepsi geleneksel olarak models.py adında tek bir dosyaya yerleştirilir.

Django birçok veri tabanı sistemini destekler. SQLite, test ve geliştirme için gerçekten iyidir, çünkü başka bir yazılım yüklemeye gerek kalmadan kutudan çıkar çıkmaz kullanılabilir. Üretim için MYSQL veya PostgreSQL’i tercih edebilirsiniz.

Django’nun Dezavantajları

Django harika bir çerçeve olsa da, sizin için sorun olabilecek veya olmayabilecek birkaç eksisi vardır. İlk olarak, düzenli ifadelerle URL belirleme, en azından yeni başlayanlar için başarılması kolay bir iş değildir.

Şablon hataları varsayılan olarak sessizce başarısız olur, bu nedenle bunu bilmiyorsanız, uygulamada neyin yanlış olduğunu anlamaya çalışırken çok fazla zaman kaybedebilirsiniz veya daha da kötüsü, uygulamanızın bir sorunu olduğunu bile bilmeyebilirsiniz. Aynı zamanda güçlü fikirlere sahip bir çerçevedir, bu da ona monolitik bir his verir. İşleri yapmanın popüler ve tavsiye edilen bir yolu vardır ve bunu izlemeniz gerekir.

Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.

Django vs. Flask

Flask bir mikroframework’tür, yani basit ama genişletilebilirdir. Flask, tek bir şey yapma ve onu iyi yapma konseptine dayanır. Flask herhangi bir araca ya da ekstra kütüphaneye ihtiyaç duymaz. Ayrıca herhangi bir veri tabanı soyutlama katmanına da sahip değildir.

Öte yandan Django, birçok şeyi kutudan çıktığı gibi sağlayan, pillerle birlikte gelen bir çerçevedir. Bir yönetici paneli, bir ORM (Nesne İlişkisel Eşleme) içermesi ile Flask’tan daha az kontrol sunar. Django, web sitesi oluşturmayı basitleştirme amacına sahiptir.

Peki, hangisi daha iyidir?

Gerçekten daha iyi ya da daha kötü bir çözüm yoktur. Bu sizin gereksinimlerinize bağlıdır. Her ikisi de kendi pazarlarında ve alanlarında harikadır. Üst düzeyde, Django tam yığın bir çerçeve olmanın avantajını sağlar. Genel olarak, ekipler çeşitliliği nedeniyle Flask yerine Django’yu tercih eder.

Özetle Django, web uygulamaları oluşturmak için Python kullanan popüler bir İçerik Yönetim Sistemi (CMS) ve web çerçevesidir. Django, sürdürülebilir ve güvenli uygulamalar oluşturmayı kolaylaştıran esnek, ölçeklenebilir bir mimari sağlar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Önceki Yazı

Data Lake (Veri Gölü) Nedir? Veri Ambarı ve Veri Gölü Arasındaki Farklar

Sonraki Yazı

Large Language Model (LLM) Nedir? Uygulama Örnekleri

İlgili Diğer Yazılar
İletişime Geçin
Kişisel Verilerin Koruması ile ilgili aydınlatma metnini okudum, bu kapsamda bilgilerimin işlenmesini ve saklanmasını kabul ediyorum.
İletişime Geçin
Bulut hizmetleri konusunda yardıma mı ihtiyacınız var? 30 günlük demo talebi için ekibimizle iletişime geçebilirsiniz
Kişisel Verilerin Koruması ile ilgili aydınlatma metnini okudum, bu kapsamda bilgilerimin işlenmesini ve saklanmasını kabul ediyorum.