Django Çerçevesi
Bu bölümde, Django Framework hakkında ayrıntılı olarak tartışacağız.
Django, web uygulamaları oluşturmak için kullanılan bir MVT web çerçevesidir. Devasa Django web çerçevesi o kadar çok “pil dahil” ile birlikte gelir ki, geliştiriciler çoğu zaman her şeyin birlikte çalışmayı nasıl başardığına şaşırırlar. Bu kadar çok pil eklemenin arkasındaki ilke, ikincisini ayrı bir kitaplık olarak eklemek yerine çerçevenin kendisinde ortak web işlevlerine sahip olmaktır.
Django çerçevesinin popülaritesinin arkasındaki ana nedenlerden biri, devasa Django topluluğu. Topluluk o kadar büyük ki, her yönden geliştiricilerin kimlik doğrulama, yetkilendirme, tam teşekküllü Django destekli CMS sistemleri, e-ticaret eklentileri gibi üçüncü taraf paketleri geliştirdiği ayrı bir web sitesi ayrılmıştı. Geliştirmeye çalıştığınız şeyin zaten birileri tarafından geliştirilmiş olma ihtimali yüksek ve bunu projenize çekmeniz yeterli.
Neden Django kullanmalısınız?
Django, geliştiricileri hızlı, temiz ve pratik tasarımla web siteleri geliştirmeye teşvik edecek şekilde tasarlanmıştır. Django'nun işleri halletmeye yönelik pratik yaklaşımı, kalabalıktan sıyrıldığı yerdir.
Sosyal medya web sitesi gibi son derece özelleştirilebilir bir uygulama oluşturmayı planlıyorsanız, Django dikkate alınması gereken en iyi çerçevelerden biridir. Django'nun gücü, kullanıcılar arasındaki etkileşiminde veya farklı medya türlerini paylaşma yeteneğinde yatmaktadır. Django'nun en büyük avantajlarından biri, size uygulamalarınızda son derece özelleştirilebilir üçüncü taraf kullanıma hazır eklentiler sağlayan büyük topluluk tabanlı desteği kullanma yeteneğidir.
Web geliştirme için Django'yu seçmeniz için en önemli on neden aşağıdadır -
Python
Python, basit dil yapıları, akış yapısı ve kolay sözdizimi nedeniyle muhtemelen öğrenilmesi en kolay programlama dillerinden biridir. Çok yönlüdür ve birçok cihaza gömülü web siteleri, masaüstü uygulamaları ve mobil uygulamaları çalıştırır ve diğer uygulamalarda popüler bir komut dosyası dili olarak kullanılır.
Piller dahildir
Django, URL yönlendirme, kimlik doğrulama, bir nesne-ilişkisel eşleyici (ORM), şablonlama sistemi ve db-şema geçişleri gibi ortak işlevler oluşturmak için gerekli olan ortak kitaplıklarla birlikte gelir.
Yerleşik yönetici
Django, modellerinizi, kullanıcı / grup izinlerinizi yönetmenizi ve kullanıcıları yönetmenizi sağlayan yerleşik bir yönetim arayüzüne sahiptir. Model arabirimi yerinde olduğunda, gelişmiş veritabanı işlevleri dışında tümü için ayrı bir veritabanı yönetim programına gerek yoktur.
Yoluna çıkmaz
Bir Django uygulaması oluşturmak, standart şablon ve gereksiz işlevler eklemez. Zorunlu içe aktarmalar, üçüncü taraf kitaplıkları ve XML yapılandırma dosyaları yoktur.
Ölçeklenebilir
Django, MVC tasarım modeline dayanmaktadır. Bu, db (veritabanı), arka uç ve ön uç kodu gibi tüm varlıkların ayrı varlık olduğu anlamına gelir. Django, sitenizi oluşturan resimler, dosyalar, CSS ve JavaScript dahil statik medyadan kodu ayırmamızı sağlar.
Django, web sunucuları, önbelleğe alma, performans yönetimi, kümeleme ve dengeleme için üçüncü taraf kitaplıklarının tam listesini destekler. Django'nun sağladığı avantajlardan biri, büyük e-posta ve mesajlaşma uygulamaları ve ReST ve OAuth gibi hizmetler için destektir.
Savaş test edildi
Django ilk olarak 2005 yılında açık kaynaklı hale geldi. 12 yıllık büyümenin ardından, Django artık sadece haber yayınlama web sitelerini işletmekle kalmıyor, aynı zamanda Pinterest, Instagram, Disqus, Bitbucket, EventBrite ve Zapier gibi büyük küresel girişimlerin tamamını veya bir kısmını da işletiyor. Bu, onu çalışmak için sağlam ve güvenilir bir web çerçevesi yapar.
Büyük paket desteği
Geniş topluluk desteği ve büyük geliştirici ağı nedeniyle, yapmayı düşündüğünüz her şeyin daha önce yapılmış olma ihtimali yüksek. Geniş uluslararası geliştirici topluluğu, projelerini açık kaynaklı paketler olarak yayınlayarak topluluğa katkıda bulunur.
Bu projelerin böyle bir deposu Django Paketi sitesidir. Şu anda, Django paketleri, Django projelerimizde kullanmak için 3400'ün üzerinde artı yeniden kullanılabilir Django uygulamaları, siteleri ve araçlarını listelemektedir.
Aktif olarak geliştirildi
Açık kaynaklı proje ile ilgili en büyük risklerden biri sürdürülebilirliğidir. Uzun sürüp sürmeyeceğinden emin olamayız.
Django 12 yaşında olduğu için böyle bir risk yok. Tutarlı sürümleri, daha yeni / daha iyi sürümleri ve aktif topluluğu, kod tabanını her gün koruyan ve geliştiren büyük bir gönüllü katılımcı ekibi ile her geçen gün büyüyor.
Kararlı sürümler
Pek çok geliştirici her gün geliştirip test ettiğinden, Django gibi açık kaynaklı yazılım projeleri, çoğu durumda aktif olarak geliştirilir ve rakip özel mülk yazılımlardan daha güvenlidir. Bununla birlikte, açık kaynaklı bir yazılım projesinin dezavantajı, ticari olarak uygulanabilir bir geliştirme için kararlı bir kod tabanının olmamasıdır.
Django'da, yazılımın Uzun Süreli Destek (LTS) sürümlerine ve aşağıdaki görüntüde gösterildiği gibi tanımlanmış bir sürüm sürecine sahibiz -
Birinci Sınıf Belgeler
İlk sürümden itibaren, Django geliştiricileri uygun kapsamlı belgelerin mevcut olması gerektiğinden ve eğitimlerin kolayca anlaşılacağından emin oldular.
Django'yu Kim Kullanıyor?
Django'nun benzersiz gücü nedeniyle, Django çerçevesinin üzerine Python ile oluşturulmuş çok sayıda popüler web sitesi var. Aşağıda, tamamen veya kısmen Django'ya dayalı olarak oluşturulmuş başlıca sitelerden bazıları verilmiştir.
Disqus
Dünya çapında en çok tercih edilen blog yorum barındırma sitelerinden biridir. WordPress ve diğerleri gibi en popüler CMS (içerik yönetim sistemleri) ile Disqus aracılığıyla entegre etmek kolaydır. Django, 50 milyonun üzerinde bir kullanıcı tabanını yöneterek site sahiplerini topluluklarına ulaşmaları için tatmin edebilir.
Soğan
Django, hiciv gazeteleri için çevrimiçi bir mekan sağlayan Onion web sitesi, bunun çerçevesini sağlıyor.
Bitbucket
Bitbucket, bir sürüm kontrol havuzu barındırma hizmeti olan GitHub'a benzer. Bitbucket ve GitHub arasındaki tek fark, Bitbucket'ın çeşitli depoları barındırması, oysa GitHub'ın git depolarını barındırmasıdır. Milyonlarca kullanıcı Bitbucket ile ilişkili olduğundan ve bitbucket'ın sağladığı tüm hizmetler (depo oluşturma, kodunuzu itme, ortak çalışanlar ekleme, taahhütler, çekme isteği vb.) İstikrarlı olmalıdır. Django, bitbucket sitesini çalıştırmaktan sorumludur.
Instagram, özellikle fotoğraf ve videoları tüm arkadaşlarıyla paylaşmayı sevenler için oluşturulmuş bir sosyal ağ uygulamasıdır. Şu anda Instagram'da hayranlarına daha yakın olmak için birçok ünlü var. Django çerçevesi Instagram'ı da çalıştırıyor.
Mozilla Firefox
Google Chrome'dan sonra dünyada en yaygın kullanılan ikinci tarayıcı Mozilla tarayıcısıdır. Şimdi Mozilla'nın yardım sayfası Django çerçevesi ile oluşturuldu.
Dünyanın her yerinden milyonlarca kullanıcı, yeni fikirlerini ve ilhamlarını Pinterest'ten keşfediyor. Pinterest, çalıştırmak için Django çerçevesini kullanıyor (gereksinimlerine göre değişiklik yapıldı).
NASA
Ulusal Havacılık ve Uzay Dairesi'nin resmi web sitesi, milyonlarca kullanıcının premiere ajans tarafından sağlanan haberleri, görüntüleri, videoları ve podcast'leri ziyaret edip kontrol edebileceği bir yerdir. Django, resmi NASA web sitesinin bazı belirli bölümlerini geliştirir.
Washington post
Dünyada etkili bir gazete varsa, o kesinlikle Washington Post'tur. Washington Post'un web sitesi, günlük gazetelerine eşlik eden oldukça popüler bir çevrimiçi haber kaynağıdır. Muazzam miktarda görüntüleme ve trafik, Django web çerçevesi tarafından kolayca yönetildi.
Reddit Hediyeleri
Oldukça popüler olan Reddit web sitesi, Reddit Gifts adlı çevrimiçi, anonim bir hediye alışverişi ve buluşma platformu başlattı. Site, dünyanın her yerinden kullanıcıları birbirine bağlar ve aralarında hediye alışverişini kolaylaştırır. Django web çerçevesi, işlevselliklerini güçlendirir.
Prezi
Prezi, Django çerçevesi üzerine inşa edilmiş Microsoft PowerPoint'e bulut tabanlı bir alternatiftir. Site, manipüle edilebilen ve yakınlaştırılıp uzaklaştırılabilen sanal bir tuval sağlar. Bu, tek tek slaytlar yerine sunumun tüm görünümünü sağlar.
Bir Django projesi ve uygulaması Kurmak ve Oluşturmak
Django'yu kurmadan önce, Python'un kurulu olduğundan emin olmalıyız. Virtualenv kullandığınızı varsayarsak, basit bir pip kurulumu django yeterli olacaktır.
Sanal ortam ve Django kurulumu
Aşağıda, Windows ortamınıza sanal ortam ve Django yükleme işlemi verilmiştir -
Django'nun düzgün kurulup kurulmadığını doğrulamak için aşağıda verilen kodu yazın -
Django Projesi Oluşturma
Kurulum tamamlandıktan sonra bir Django projesi oluşturmamız gerekiyor.
Windows makinenizde aşağıdaki komutu çalıştırmak aşağıdaki django projesini oluşturacaktır -
django-admin startproject my_project_name
Dir yazıldığında, yukarıda gösterildiği gibi bir yeni dosya ve bir yeni dizin gösterilir.
manage.py- manage.py komut satırı çalıştırılabilir bir Python dosyasıdır ve django-admin etrafındaki bir sarmalayıcıdır. Adına da ima edilen projemizi yönetmemize yardımcı olur.
Bununla, adında bir dizin oluşturdu: myFirstDjangoProjectprojemizin yapılandırma kökünü temsil eden myFirstDjangoProject içinde. Bunu daha derinlemesine inceleyelim.
Django'yu yapılandırma
MyFirstDjangoProject dizinini "yapılandırma kökü" çağırarak, bu dizinin genel olarak Django projemizi yapılandırmak için gerekli dosyaları tuttuğunu kastediyoruz. Bu dizinin dışındaki hemen hemen her şey, yalnızca projenin modelleri, görünümleri, rotaları vb. İle ilişkili “iş mantığına” odaklanacaktır. Projeyi birbirine bağlayan tüm noktalar buraya yönlendirecektir.
__init__.py - Bu boştur ve dizini içe aktarılabilir bir Python paketine dönüştürür.
settings.py - Adından da anlaşılacağı gibi, çoğu yapılandırma öğesinin ayarlanacağı yer burasıdır.
urls.py - URL'ler urls.py ile ayarlanır. Bununla, bu dosyaya proje için her URL'yi açıkça yazmamız gerekmiyor. Ancak, Django'ya URL'lerin nerede bildirildiğini söylemeliyiz (yani, urls.py'deki diğer URL'leri bağlamamız gerekir).
Wsgi.py - Bu, üretimdeki uygulamaya yardımcı olmak içindir ve bazı "uygulama" nesnelerini açığa çıkaran Flask, Tornado, Pyramid gibi diğer uygulamalara benzer.
Ayarları yapma
Settings.py içine bir göz atmak önemli boyutunu ortaya çıkaracaktır - ve bunlar yalnızca varsayılanlardır. Dikkat etmemiz gereken diğer şeyler statik dosyalar, veritabanı, medya dosyaları, bulut entegrasyonu veya bir Django projesinin yapılandırılabileceği diğer düzinelerce yöntemdir. Settings.py dosyasında bahsedilen bazı noktaları anlayalım -
BASE_DIR- Bu, dosyaları bulmak için faydalıdır. Setting.py dosyasının içinde, BASE_DIR parametresi, temel dizinin mutlak yolunu ayarlar.
SECRET_KEY- Hash yapmak için kullanılır. Genel olarak çerezler, oturumlar, csrf koruması ve kimlik doğrulama belirteçleri için secret_key kullandık.
DEBUG - Geliştirme veya üretim modunda çalışacak şekilde ayarlayabiliriz.
ALLOWED_HOSTS- Uygulamamızın sunulduğu ana bilgisayar adlarının listesini sağlıyoruz. Geliştirme modunda, ayarlamak isteğe bağlıdır; ancak üretim makinesinde Django projemizi ayarlamamız gerekiyor.
INSTALLED_APPS- Şu anda Django projemizde yüklü ve çalışan Django "uygulamalarının" listesidir. Dahili Django, aşağıdaki gibi altı yüklü uygulama sağlar -
'django.contrib.admin'
'django.contrib.auth'
django.contrib.
django.contrib.sessions
django.contrib.messages
django.contrib.staticfiles
MIDDLEWARE- Django projemizin çalışmasına yardımcı olur. Django istek / yanıt işlemeye bağlanan bir python sınıfıdır.
TEMPLATES- Belgenin ön uçta nasıl görüntülenmesi gerektiğini tanımlar. Django şablonları, herhangi bir metin tabanlı format üretmek için kullanılır.
WSGI_APPLICATION- Kurduğumuz herhangi bir sunucu WSGI dosyasının nerede olduğunu bilmek zorundadır. Harici bir sunucu kullanıyorsanız, kendi ayarlarına bakacaktır. Varsayılan olarak, wsgi.py içindeki nesnelere işaret eder.
DATABASES- Django projemizin şu anda erişmekte olduğu veritabanlarını ayarlar. Varsayılan veritabanının ayarlanması zorunludur. İstediğimiz veritabanını belirlediğimizde, veritabanıyla ilgili birkaç şeyden bahsetmemiz gerekir - HOST, USER, PASSWORD, PORT, veritabanı NAME ve uygun ENGINE.
STATIC_URL- STATIC_ROOT konumunda bulunan statik dosyalara atıfta bulunurken kullanılacak URL'dir. Varsayılan olarak Yoktur.
Ancak statik dosyalar için bir yol eklememiz gerekebilir. Dosyanın sonuna gidin ve STATIC_URL girişinin hemen altına, aşağıda gösterildiği gibi STATIC_ROOT adlı yeni bir tane ekleyin -
myFirstDjangoProject/settings.py
STATIC_URL = '/ statik /'
STATIC_ROOT = os.path.join (BASE_DIR, 'statik')
Veritabanı Kurmak
Siteniz için tarih depolayabilen birçok farklı veritabanı yazılımı var. Varsayılan olan sqlite3'ü kullanacağız.
Bu zaten aşağıda verilen bölümünde oluşturulmuştur. myFirstDjangoProject/settings.py -
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Blogumuz için bir veritabanı oluşturmak için, konsolda aşağıdakileri çalıştıralım - python manage.py migrate (manage.py dosyasını içeren myFirstDjangoProject dizininde olmamız gerekir.
Her şey yolunda giderse aşağıdaki çıktıyı alacaksınız -
Web Sunucusunu Başlatma
Manage.py dosyasını içeren dizinde olmanız gerekir. Konsolda, python manage.py runserver'ı aşağıdaki gibi çalıştırarak web sunucusunu başlatabiliriz -
Şimdi yapmanız gereken tek şey web sitenizin çalışıp çalışmadığını kontrol etmektir. Tarayıcınızı açın (Firefox, Chrome, Safari, Internet Explorer veya ne kullanırsanız kullanın) ve bu adresi girin -
http://127.0.0.1:8000/
veya
http://localhost:8000/ # Web sunucumuz yalnızca yerel makinemizde çalıştığı için.
Tebrikler! İlk web sitenizi yeni oluşturdunuz ve bir web sunucusu kullanarak çalıştırdınız!
Web sunucusu çalışırken, ek komutlar girmek için yeni bir komut satırı istemi görmezsiniz. Terminal sonraki metni kabul edecek ancak yeni komutları çalıştırmayacaktır. Bunun nedeni, gelen istekleri dinlemek için web sunucusunun sürekli çalışmasıdır.
Django Modelleri
Blogumuzdaki tüm yazıları saklayacak bir Django modeli oluşturmaya çalışıyoruz. Ancak çalıştığından emin olmak için nesneler hakkında bilgi edinmemiz gerekiyor.
Nesneler
Nesneler, özellikler ve eylemlerin bir koleksiyonudur. Bunu bir örnekle anlayalım. Bir kediyi modellemek istediğimizi varsayalım, renk, yaş, ruh hali (iyi / kötü / uykulu) ve sahibi gibi özelliklere sahip Cat adında bir nesne oluşturacağız.
O zaman Kedinin bazı eylemleri vardır: mırlama, tırmalama veya besleme.
Cat
--------
color
age
mood
owner
purr()
scratch()
feed(cat_food)
CatFood
--------
taste
Yani temelde koddaki gerçek şeyleri özelliklerle (nesne özellikleri olarak adlandırılır) ve eylemlerle (yöntemler olarak adlandırılır) tanımlamaya çalışıyoruz.
Bir blog oluştururken, biraz metin içeriğine ve bir başlığa ihtiyacımız var. Ayrıca yazarın adı, yaratılış tarihi ve ayrıca yayın tarihi de gereklidir.
Bu yüzden blogumuz aşağıdaki nesnelere sahip olacak -
Post
--------
title
text
author
created_date
published_date
Ayrıca bu yazıyı yayınlayan bir yönteme ihtiyacımız var. Artık bir nesnenin ne olduğunun farkında olduğumuzdan, blog yazımız için bir Django modeli oluşturabiliriz.
Bir model, Django'da özel bir tür nesnedir ve veritabanına kaydedilir. Verilerimizi SQLite veritabanında saklayacağız.
Bir uygulama oluşturma
Her şeyi netleştirmek için projemiz içinde ayrı bir uygulama oluşturacağız. Aşağıda, aşağıda belirtilen basit komutu çalıştırarak bir blog web uygulaması oluşturmaya çalışacağız.
Şimdi yeni bir myBlog dizininin oluşturulduğunu ve şimdi bir dizi dosya içerdiğini fark edeceğiz. Projemizdeki dizinler ve dosyalar aşağıdaki gibi olmalıdır -
Bir uygulama oluşturduktan sonra, Django'ya onu kullanmasını da söylememiz gerekiyor. Bunu myFirstDjangoProject / settings.py dosyasında yapıyoruz.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myBlog',
]
Bir blog yazısı modeli oluşturma
İçinde myBlog/models.py dosyasında Model adı verilen tüm nesneleri tanımlıyoruz - burası blog yazımızı tanımlayacağımız bir yerdir.
MyBlog / models.py dosyasını açalım, içindeki her şeyi kaldıralım ve aşağıdaki gibi kodu yazalım -
İlk olarak, çağırarak veya içeri aktararak diğer dosyalardan bazı işlevleri içe aktarıyoruz. Bununla, aynı şeyleri her dosyaya kopyalayıp yapıştırmak yerine, bazı parçaları ekleyebiliriz.from and import.
class Post(models.Model) - Bu çizgi modelimizi tanımlar (bu bir nesnedir).
class, bir nesneyi tanımladığımızı gösteren özel bir anahtar sözcüktür.
Post, modelimizin adıdır. Her zaman bir sınıf adına büyük harfle başlayın.
models.Model, Post'un bir Django Modeli olduğu anlamına gelir, bu nedenle Django, veritabanına kaydedilmesi gerektiğini bilir.
Şimdi yukarıda tanımladığımız özellikleri tartışalım: başlık, metin, oluşturma_tarihi, yayınlanma_tarihi ve yazar. Bunu yapmak için her alanın türünü tanımlamamız gerekir.
models.CharField - Sınırlı sayıda karakter içeren metni bu şekilde tanımlarsınız.
Models.TextField - Bu, sınırsız uzun metin içindir.
Models.DateTimeField - Bu tarih ve saat içindir.
Models.ForeignKey - Bu başka bir modele bağlantıdır.
Bir fonksiyon / yöntem tanımlıyoruz def ve yayınlama, yöntemin adıdır.
Yöntemler genellikle bir şey döndürür. Burada __str __ () çağırdığımızda, Yazı başlığı olan bir metin (dize) alacağız.
Veritabanınızdaki modeller için tablolar oluşturma
Son adım, veritabanımıza yeni bir model eklemektir. Öncelikle, Django'nun modelimizde bazı değişiklikler yaptığımızı anlamasına izin vermeliyiz. Konsol penceremizde de aynısını komut ile yapalımpython manage.py make migrations myBlog aşağıda gösterildiği gibi -
Ardından Django, şimdi veritabanımıza uygulamamız gereken bir geçiş dosyası hazırlar. Konsolumuzda şunları yazabiliriz:python manage.py migrate myBlog ve çıktı aşağıdaki gibi olmalıdır -
Post modelimiz artık veri tabanımızda.
Django Yöneticisi
Yeni modellediğimiz gönderileri eklemek, düzenlemek ve silmek için Django admin kullanıyoruz.
Öyleyse açalım myBlog/admin.py file ve bunun içindeki içeriği aşağıya koyun -
İlk olarak, önceki bölümde tanımlanan Post modelini içe aktarıyoruz (dahil ediyoruz). Modelimizi admin sayfasında görünür kılmak için modeli admin.site.register (Post) ile kaydettirmemiz gerekiyor.
Bir yönetici sitesine giriş yapmak için, sitedeki her şeyi kontrol eden bir kullanıcı hesabı olan bir süper kullanıcı oluşturmanız gerekir. Bu yüzden web sunucusunu durdurun ve python komut satırına yazınmanage.py createsuperusergirin ve enter tuşuna basın.
Tamam, şimdi Post modelimize bakma zamanı. Web sunucusunu çalıştırmak için konsolda python manage.py çalıştırma sunucusunu çalıştırmayı unutmayın. Tarayıcınıza gidin ve adresi yazınhttps://127.0.0.1:8000/admin/.Az önce seçtiğimiz kimlik bilgileriyle giriş yapın. O zaman Django yönetici kontrol panelini aşağıdaki gibi görmelisiniz -
Gönderilere gidin ve biraz deneyin. Her yerden birçok blog yazısı ve içerik ekleyebilirsiniz. Blogunuz şöyle görünecek -
Bu, Django'ya genel bir bakıştır ve sadece birkaç satır kodla bir blog oluşturabiliyoruz.