Django nedir?

Django, web uygulamalarını hızlı ve verimli bir şekilde geliştirmek için kullanabileceğiniz bir yazılımdır. Çoğu web uygulaması; kimlik doğrulama, bir veri tabanından bilgi alma ve çerez yönetimi gibi birkaç ortak işleve sahiptir. Geliştiriciler, yazdıkları her web uygulamasına benzer işlevleri kodlamalıdır. Django, farklı işlevleri web uygulaması çerçevesi olarak adlandırılan geniş bir yeniden kullanılabilir modül koleksiyonunda gruplandırarak işlerini kolaylaştırır. Geliştiriciler, kodlarını daha verimli bir şekilde düzenlemek, yazmak ve web geliştirme süresini önemli ölçüde azaltmak için Django web çerçevesini kullanır.

Web geliştiricileri neden Django'yu seçiyor?

Piyasada birkaç web çerçevesi var. Django Python dilinde yazılmıştır ve birçok Python web çerçevelerinden biridir. Bununla birlikte, geliştiriciler genellikle aşağıdaki nedenlerden dolayı Django web çerçevesini diğerlerine tercih ederler.

Geliştirme hızı

Django çerçevesi iyi organize edilmiştir ve kurulumu ve öğrenmesi kolaydır, böylece saatler içinde kullanmaya başlayabilirsiniz. Django tasarımcıları, herhangi bir web mimarisini kodda hızlı bir şekilde uygulamak için çerçeveyi oluşturmuştur. Hızlı gelişimi ve temiz, pragmatik tasarımı destekler. Sadece birkaç satırda kod yazabilirsiniz çünkü Django aşağıdakiler gibi birkaç yaygın web geliştirme görevi için kullanıma hazır bir yapı sağlar:

  • Kullanıcı kimlik doğrulaması
  • İçerik yönetimi
  • Site haritaları
  • RSS akışları

Uygun maliyetli

Django, yazılımı inceleyen ve yazılımın bakımını yapan aktif bir topluluğa sahip ücretsiz ve açık kaynaklı bir Python projesidir. Kâr amacı gütmeyen bir kuruluş olan Django Yazılım Vakfı, Django'nun kullanımını ve bakımını teşvik eder ve destekler. Diğer geliştiricileri Django projesini incelemeye ve projeye katkıda bulunmaya teşvik eden düzenli buluşmalar, toplantılar ve topluluk etkinlikleri düzenler. Sonuç olarak, kullanımı ücretsiz yüksek kaliteli, zengin özelliklere sahip bir web çerçevesi ortaya çıkar.

Popüler

Aşağıdakiler gibi binlerce açık kaynaklı proje ve yüksek profilli site Django kullanıyor:

  • Instagram
  • Mozilla Firefox
  • Pinterest
  • National Geographic

Popülerliği nedeniyle, çerçeve güçlü bir destek altyapısına sahiptir ve gelişmeye devam eder. Çok sayıda kişi ve şirket, Django'yu kullanırken karşılaşabileceğiniz geliştirme zorlukları için ücretsiz ve ücretli destek sağlar.

Django nasıl çalışır?

Web uygulamaları iki bölümden oluşur: sunucu kodu ve istemci kodu. İstemci veya web sitesi ziyaretçisinin bir tarayıcısı vardır. Tarayıcısına bir URL yazdıklarında, web uygulamasının çalıştığı web sunucusu makinesine bir istek gönderirler. Sunucu isteği bir veri tabanı kullanarak işler ve bilgileri istemciye yanıt olarak geri gönderir. İstemci kodu, bilgileri ziyaretçiye bir web sayfası olarak görüntüler.

Django, Model-Görünüm-Şablon (MVT) mimarisi kullanarak bu istek ve yanıt sisteminin kodunu yönetir.

Model

Django modelleri, veri tabanı ve sunucu kodu arasında arabirim görevi görür. Verileriniz hakkında tek kesin bilgi kaynağıdır. Bu veri modelleri, veri tabanınızla etkileşim kurmak için ihtiyaç duyduğunuz temel alanları ve işlemleri içerir. Django modelleri böylece veri tabanı tablolarınızı Python kodunda sınıflara veya nesnelere dönüştürür. Buna nesne-ilişkisel eşleme denir.

Genel olarak, her model tek bir veri tabanı tablosuna eşlenir ve veri tabanı alanlarını temsil eden özniteliklere sahiptir. Örneğin, web siteniz çalışan bilgilerini içeriyorsa aşağıdaki şekilde temsil edilebilir:

  • Çalışan adlarını ve adres alanlarını içeren bir çalışan tablosu.
  • Ad ve Adres adlı iki özniteliğe veya model alanına sahip Sınıf Çalışanı adlı bir çalışan modeli.

Görünüm

Django görünümleri, modelleri kullanarak isteği işler. Web sitenizin ziyaretçilerinin web sitenize yapabileceği her istek türü için bir görünüm işlevi yazabilirsiniz. Bir görünüm işlevi, isteği girdi olarak alabilir ve bir hata kodu, görüntü, dosya veya herhangi bir veri türü olabilen bir yanıt döndürebilir.

Django, görünüm işlevlerinizi URL'lerinizle eşleyen bir URL eşleyicisi veya URL göndericisi özelliğine sahiptir. Aşağıda gösterildiği gibi URL kalıpları yazdığınız bir URL eşleyici dosyası oluşturmanız gerekir.

urlpatterns = [

path('employee/name', views.employee_name),

path('employee/<int:year>/', views.year_archive),

]

Örneğin, web sitenizin ziyaretçilerinin belirli bir yıldaki tüm çalışanlarınızın listesini görüntülemesini istiyorsanız çalışan/yıl numarası URL yolunu ayarlayın ve ilgili bir Django görünüm işlevi year_archive yazın. Web sitenizin ziyaretçisi tarayıcısına "yourwebsitename.com/employee/2020" yazdığında aşağıdaki adımlar gerçekleşir:

  1. İstek web uygulamanıza gelir.
  2. Django web çerçevesi, URL eşleyicisinden yıl numarasını ve görünüm işlevi adını alır.
  3. 2020 yılı için year_archive görüntüleme işlevini çalıştırır.
  4. Year_archive, 2020 için veri tabanından tüm çalışan verilerini almak üzere çalışan modelini kullanır.
  5. Django web çerçevesi, verileri yanıt olarak geri gönderir.

Şablon

Django şablonları tarayıcıdaki web sayfası sunumunu yönetir. Çoğu web sayfası Köprü Metni Biçimlendirme Dili'nde (HTML) olduğundan, Django şablon kodunu HTML'ye benzer bir tarzda yazabilirsiniz. Şablon dosyası belirli bileşenleri içerir:

  • Görüntüler, düğmeler ve başlıklar gibi son HTML çıktısının statik kısımları.
  • Her istekte değişen, dinamik içerik veya verilerin eklenme biçimini açıklayan özel söz dizimi.

Aşağıdaki bileşenler Django şablon sistemini oluşturur.

Şablon dili

Şablon dili, HTML şablon kodunu yazmak için kullandığınız programlama dilidir. Django kendi Django Şablon Dili'ni ve Jinja2 adlı popüler bir alternatifi destekler.

Şablon motoru

Şablon motoru şablon dosyasını işler ve son HTML çıktısını oluşturur. Bu çıktıda yanıttan gelen verileri içerir.

Örneğin, web sitesi ziyaretçiniz çalışan bilgilerini istediğinde, Django şablonunuz ziyaretçinizin gördüğü web sayfasını web sitenizin başlığı, tüm çalışanların adlarını ve adreslerini içeren bir tablo ve İleri yazan bir düğme ile doldurur.

Django'da başka hangi modülleri kullanabilirsiniz?

Model-Görünüm-Şablon (MVT) mimarisi herhangi bir uygulamanın temel yapısını tanımlasa da, Django web sitenizi geliştirmek için birkaç farklı modüle sahiptir. Aşağıdaki bölümde birkaç örnek verilmiştir.

Formlar

Çoğu web sitesi kayıt ve ödeme gibi görevler için veya web sitesi ziyaretçisinden bilgi toplamak için form gerektirir. Django, web sitesi formlarınızı yönetmek için kullanabileceğiniz birçok araç ve kütüphane sağlar. Form işlemeyi basitleştirebilir ve otomatikleştirebilir ve bunu kendi yazacağınız koda göre daha güvenli bir şekilde yapabilir.

Django form işlemeyi üç şekilde ele alır:

  1. Görüntülenecek verileri hazırlayarak ve yeniden yapılandırarak form oluşturma
  2. İstemci tarafında HTML formlarını kontrol ederek form doğrulama
  3. Gönderilen verileri alarak form işleme

Kullanıcı kimlik doğrulaması

Çağdaş web siteleri kullanıcıların kimliğini doğrulamalı ve yetkilendirmelidir. Kimlik doğrulama, kullanıcının kimliğini doğrular, yetkilendirme ise kimliği doğrulanmış bir kullanıcının sitede neler yapabileceğine karar verir. Django çeşitli kullanımlar için kimlik doğrulamayı yönetebilir.

  • Kullanıcı hesapları
  • Kullanıcıların belirli web sitesi görevlerini gerçekleştirmelerine olanak tanıyan izinler ve evet veya hayır bayrakları
  • Benzer izinlere sahip birden çok kullanıcı hesabı grubu
  • Çerez tabanlı kullanıcı oturumları

Ayrıca yapılandırılabilir bir parola karma sistemi ve form ve görünümlerdeki içeriği kısıtlamaya yönelik araçlar sağlar.

Site yönetimi

Django yönetim sitesi, siteniz için bir yönetici sayfası sağlamayı kolaylaştırır. Site yöneticileri sayfayı sitenizdeki veri modellerini oluşturmak, düzenlemek veya görüntülemek için kullanabilir.

Django katı mıdır?

Web geliştiricileri üzerinde bir süreç uyguladıklarında gayriresmi şekilde web çerçevelerini “katı” olarak adlandırırız. Geliştiricilerin belirli görevleri yerine getirmeleri gereken bir fikri veya doğru bir yolu vardır. Örneğin, katı çerçeveler tipik olarak belirli sektörlerle ilgili uygulama görevleri için ayrıntılı belgeler tutarak ilgili sektörlerde verimli gelişimi destekler.

Öte yandan, katı olmayan çerçeveler, farklı Model-Görünüm-Şablon (MVT) bileşenlerini birlikte nasıl entegre edebileceğiniz konusunda daha az kısıtlamaya sahiptir. Daha esnek olsalar da, farklı geliştiriciler aynı göreve çeşitli yaklaşımlar kullanabildikleri için kod organizasyonunda zorluklara neden olurlar.

Django biraz katıdır. Çok çeşitli bileşenler sağlar ve birçok farklı web geliştirme görevinin nasıl ele alınacağı hakkında belgeler içerir. Geliştiriciler, çeşitli seçenekler arasından seçim yapmak için Django'nun ayrıştırılmış mimarisini kullanabilir ve hatta ihtiyaç duydukları yeni seçenekler için destek ekler.

Django güvenliği nedir?

Siber suçlular genellikle kullanıcı girişi, finansal veriler ve diğer hassas bilgilere erişmek için web uygulamalarını hedefler. Django web çerçevesi, web uygulamalarınızı ve kullanıcılarınızı korumak için çeşitli özellikler sunar. Django en iyi uygulamalarını izleyerek birçok yaygın güvenlik hatasından kaçınabilirsiniz. Aşağıdaki bölümde birkaç örnek verilmiştir.

Siteler arası betik çalıştırma koruması

Siteler arası betik çalıştırma (XSS) saldırıları, siber suçlular web sitenizin kullanıcılarının tarayıcılarına kötü amaçlı kod eklediğinde meydana gelir. Web uygulamanızı aşağıdakiler gibi çeşitli şekillerde kandırarak kullanıcılarınıza saldırabilirler:

  • Sunucunun bir sonraki yanıtında yanlışlıkla kötü amaçlı kod göndermesini sağlamak için kötü amaçlı betikleri veri tabanınızda saklama.
  • Kullanıcılarınızı, kodunuz yerine, kötü amaçlı bir istemci kodunun kullanıcı tarayıcısında çalışmasını sağlayan bir bağlantıya tıklamaları için kandırma.

Örneğin, Django şablonunda, bir kullanıcının profilindeki ad alanına girdiği metni gösteren {{name}} alanı olabilir. Siber suçlu oturumu ele geçirir ve adı <script>alert('hello')</script> gibi bir kodla değiştirir. Şablon {{<script>alert('hello')</script>}} olarak değişir.

Bu kod artık kullanıcınızın tarayıcısında çalışır, böylece ekranlarında “Merhaba” kısa mesajı görünür. Bu örnek basit olsa da, bir siber suçlunun kullanıcınızın bilgisayarını kontrol etmek için nasıl karmaşık betikler ekleyebileceğini görebilirsiniz.

Django, kullanıcı girişinden kötü amaçlı bir kodu belirten < ve > gibi belirli karakterlerden otomatik olarak kaçarak veya bunları yok sayarak sizi bu tür saldırılardan korur.

Yetkisiz erişim koruması

Siteler arası istek sahtekarlığı (CSRF) saldırıları, bilgisayar korsanları kullanıcılarınızın kimlik bilgilerini çaldığında ve web uygulamanıza yetkisiz istekler gönderdiğinde meydana gelir. Django, Django CSRF modülündeki çoğu CSRF saldırısına karşı yerleşik korumaya sahiptir. İlk oturum açışlarında her kullanıcıya gizli bir değer göndererek çalışır. 

Yeni istemci istekleri, istemcinin iddia ettiği kişi olduğunun kanıtı olarak gizli değeri içerir. Yalnızca yetkili kullanıcının tarayıcısı gizli değeri bildiğinden, Django, kullanıcı gibi davranan başka bir makineden geliyorsa istekleri otomatik olarak reddedebilir. Çalışması için Django CSRF modül ayarını etkinleştirmelisiniz.

SQL eklemesi koruması

Siber suçlular, POST gibi HTTP isteklerini kullanarak veri tabanınıza SQL kodu eklemek için SQL eklemelerini kullanır. Kötü amaçlı kod orijinal verilerinizi çalabilir veya silebilir. Django bu sorunu tasarımın kendisinde çözer. Parametre adı verilen, kullanıcının gönderdiği veriler, model katmanına ulaşana kadar veri tabanı sorgusundan ayrı tutulur. Django modeli daha sonra sorgu kodunu oluştururken tehlikeli karakterlerden kaçabilir.

Topluluk desteği nedeniyle koruma

Django'daki koruma, yerleşik güvenlik özelliklerinin ötesine geçer. Django açık kaynak olduğundan, birçok deneyimli geliştirici Django modüllerini kullanır ve inceler. Kapsamlı testler, Django kodunun güvenilirliğini artırır ve yanlışlıkla meydana gelen güvenlik açıklarının kalmasını önler.

Django ölçeklenebilirliği nedir?

Web sitesi geliştirme bağlamında ölçeklenebilirlik, web sitesinin aynı anda birden fazla istemci isteğini işleme yeteneğini ifade eder. Django projeleri çok fazla ölçeklenebilir ve binlerce isteği karşılayabilir. Django uygulamanızı aşağıdaki şekillerde ölçeklendirebilirsiniz.

Donanım

Django ekibi, sisteminizdeki donanımı verimli bir şekilde kullanmak için web çerçevesini tasarlamıştır. Kaynak paylaşımsız mimarisi ile Django, veri tabanı katmanı (modeller) ve uygulama katmanı (görünümler) gibi bileşenleri ayırır. Sistemin geri kalanını etkilemeden herhangi bir seviyede donanım ekleyebilirsiniz. Sisteminize daha fazla veri tabanı sunucusu veya uygulama sunucusu ekleyebilirsiniz, Django bu kaynakları birden fazla ziyaretçiyi işlemek için verimli bir şekilde kullanacaktır.

Önbelleğe Alma

Önbelleğe alma, bazı web sayfası verilerini istemcinin sunucusuna veya aracı sunuculara kaydetme işlemidir, böylece Django uygulamanız istekleri daha hızlı işleyerek ölçeği artırır. Django, farklı önbelleğe alma seviyelerine sahip güçlü bir önbelleğe alma sistemi sunar:

  1. Web sitenizin tamamını önbelleğe alabilirsiniz.
  2. Belirli görünüm işlevi çıktısını önbelleğe alabilirsiniz.
  3. Oluşturması zaman alan belirli içerikleri önbelleğe alabilirsiniz.

Django projeleri ayrıca üçüncü taraf önbellekleriyle de iyi çalışır. Bu önbelleklerle ilgili ipuçları veren ve uygulamanızın önbelleğe almak istediğiniz bölümünü söyleyen kod yazabilirsiniz.

AWS, Django web uygulamalarınızı desteklemeye nasıl yardımcı olabilir?

AWS Elastic Beanstalk; Apache, Nginx, Passenger ve IIS gibi bilindik sunucular üzerinde Django, Python, Java, .NET, PHP, Node.js, Ruby, Go ve Docker gibi teknolojilerle geliştirilmiş web uygulamalarını ve hizmetleri dağıtıp ölçeklendirmek için kullanıcı dostu bir hizmettir.

Elastic Beanstalk, Django geliştiricilerini aşağıdaki şekillerde destekler:

  • Django kodunuzu yüklersiniz ve Elastic Beanstalk dağıtımı otomatik olarak yönetir.
  • Elastic Beanstalk sizin yerinize altyapıyı tedarik edip çalıştırdığı ve uygulama yığınını (platform) yönettiği için bu işlemlere zaman ayırmanız veya bu konuda uzmanlaşmanız gerekmez.
  • Elastic Beanstalk, ayarlanabilen Otomatik Ölçeklendirme ayarlarını kullanarak uygulamanızın kendine özgü gereksinimlerine göre ölçeği otomatik olarak büyütüp küçültür.

Hemen ücretsiz bir AWS hesabı oluşturarak Elastic Beanstalk'a bir Django uygulaması dağıtmaya başlayın.

AWS Django için sonraki adımlar

Ücretsiz bir hesap için kaydolun

AWS ücretsiz kullanım için anında erişim elde edin. 

Kaydolun 
Konsolda oluşturmaya başlayın

AWS Management Console’da oluşturmaya başlayın.

Oturum açın