Ana içeriğe atla

Django Gerekli Ortamların Kurulması ve İlk Projenin başlatılması

Herkese Merhaba, Bugün Django geliştirmek için gerekli olan ortam değişkenlerinin kurulumu hakkında bilgi vereceğim.

İçerik Haritası:

-Virtualenv Nedir?
-Virtualenv Kurulumu
-Git Kurulumu
-Derleyici Hakkında Bilgi
-Django Kurulumu
-Django Projesinin başlatılması
-Django Projesi İçindeki Dosyaları Tanıyalım
-Son Söz

Hadi Başlayalım.

Virtualenv Nedir?

İnglizce açılımı Virtual Enviroment, bizim için ana sistemde yüklü olandan ayrı, bir sanal geliştirme ortamı sağlıyor peki bunun bize ne faydası var örnek vererek açıklamak istiyorum. Bir python projesinde Django kütüphanesi ile otomasyon yapıyoruz bağlılıklarımız(Paket veya Kütüphane olarak tabir edebiliriz) o projeye has dosyalar olarak kullanılır yani biz bilgisayara kurduğumuz ana Python bağlılıklarından ayırıp izole edilmiş bir ortamda geliştirmelerimize devam ediyoruz. Bunun bize avantajı proje gereksiz bağlılıklıklarla büyümüyor yani Django ile otomasyonda siz görüntü işleme yapmak istemiyorsanız görüntü işleme kütüphanesinin sizin geliştirme ortamında olması gereksiz proje ortamınıza yük demektir. Bu yüzden biz projelerimizde Virtual Enviroment kullarak geliştirme yapacağız.

Virtualenv Kurulumu 

Virtual Enviromenti kurmadan önce hepimizin bilgisayarında Python düzgün bir şekilde yüklü olması lazım bu linkten bilgisayarınız için uygun Python dosyasını indirin ve kurulum yaparken alttaki resimde işaretlemiş olduğum kısmı işaretlediğinizden emin olun.

Bu kısaca bizim kodlarımızı derlerken öncelikli olarak vereceği yolu otomatik sistemimize yüklemesine izin veriyor, yani biraz daha detaylandırayım biz bir virtual enviroment olusturduk C:\Users\mirac\OneDrive\Masaüstü\python\FirstModule.py bunu derlemek istiyoruz ama python diyorki sen bunu derlemek istiyorsun tamam ama ben derlemek için önceden yazılmış kodları nereden alacağım işte işaretlediğimiz yere gidiyor eğer bir virtual enviroment etkinleştirmediysek ana bilgisayarımıza kurulu Python'ı kullanıyor.

Bu arada pip, Python'da yazılmış yazılım paketlerini kurmak ve yönetmek için kullanılan fiili bir standart paket yönetim sistemidir (bkz:what is pip). Kurmak istediğimiz paketleri aşağda belirttiğim şekilde kurabilirsiniz.

pip install paket adı == (isterniz burayada sürümü yazabilirsiniz) örn pip install django=2.2 eğer bir sayı vermezseniz paket dağıtımında bulunan son sürümü bizim için kurar.

Git Kurulumu

Git hakkında detaylı bilgi için buradan devam edebilirsiniz sadece bu proje için gerekli olduğu için buraya ekledim fakat konu anlatımı ayrı bir yazımda olacak şuanlık bu linkten indirip kurulumda üstteki gibi bir PATH gelirse işaretleyin ve derleyici olarak ne kullanmak istiyorsanız onu seçin. Kurulum dahil üstteki linkte detaylı bir anlatım gerçekleştireceğim.

Derleyici Hakkında Bilgi

Derleyici(Interpreter) bizim kodlarımızın makine tarafından anlaşılması için bir derleyiciye ihtiyacımız var derleyiciler bizim yazdığımız kodları makinenin anlayacağı dil olan binary(ikili sistem) yani 1 ve 0 lara dönüştürüyor. Ben derleyici olarak vscode kullanıyorum birçok extension sağlıyor bunları yeri geldikçe belirteceğim. Siz isterseniz farklı derleyicilerde kullanabilirsiniz hepsinin ana mantığı aynı Atom,Sublime Text vs.

Django Kurulumu

Evet artık hazırız gerekli ortamlarımızı kurduk masaüstünde boş bir klasör oluşturup adına Django diyebilirsiniz içine girip isterseniz CMD(Command Line İnterface) isterseniz Gitbash açarak su kodu yazıyoruz 

pip install virtualenv bu paketi ana sistemimizde kullanmadan önce python bağlılıklarımıza yüklememiz gerekiyor, ardından dosyamızın içinde virtualenv venv(venv isterseniz değişebilirsiniz ama yazılımda genel kullanımlar vardır bizde bu yüzden bu işlevi görmesi için virtualenv kısaltımı olan venv kullanıyoruz) diyip paketlerimizin bizim için dizine yüklenmesini bekliyoruz.

Evet bu da yüklendi şimdi sırada virtual enviromentımızı aktifleştirmeye geldi eğer benim gibi Windows kullanıcısıysanız source venv/Scripts/activate yazarak virtual enviromentinizi aktif edebilirsiniz.eğer linux kullanıcı iseniz source venv/bin/activate yazmanız aynı şekilde çalışacaktır. 

Burada küçük bir iki şey göstermek istiyorum 1.si bağlılıklarımız dedik bu bağlılıkları görmek için consol da ya da bashte fark etmez pip freeze yazarak o virtual enviromentta neler kurulu olduğunu görebiliriz. İlerleyen süreçlerde çokca işimize yarayacak 2. komut ise pip freeze > requirements.txt. Bu komut ise bize proje dizininde bir requirement adında bir txt oluşturuyor ve o virtual enviromentta bulunan bütün gereksinimleri bu txt içine kaydediyor. Bunun faydası nedir? eğer Production'a geçerken bu bağlılıkları korumazsak. Bu projeden örnek veriyorum Djangonun 2 versiyonuyla geliştirdik fakat gereksinimleri koymadık production'da direk Django'yu içerden kurarsak bize djangonun 3 versiyonunu verecek buda bazı kodlarda çakışmaya yol açıp tüm kodlarımızı bozabilir bu yüzden bu kodu önemle kullanmanızı tavsiye ediyorum. 

Evet baya bir bilgi içerdiğinin farkındayım fakat bunları her yeni proje geliştirme döngüsünde tekrar edeceğimiz için ezberlemenize gerek yok elinize bir kaynak var açıp açıp bakabilirsiniz bir süre sonra zaten beynimiz otomatik her şeyi biliyor hale geliyor :). Şimdi Djangoyu kendi sanal ortamımıza kuralım.

pip install django çıktısı alttaki gibiyse sorun yok devame ediyoruz.







şimdi paketimizi kurduk bunu yükler yüklemez bağlılıklarımıza kaydedelimki ilerde unutmayalım :).

pip freeze > requirements.txt yazdıktan sonra txt içine girip baktığınızda bağlılıklarınızın geldiğini göreceksiniz. Evet şuan Django kurulumunuda yaptık artık proje başlatma evresine geçiyoruz.

Django Projesinin Başlatılması

Her ne zaman olursa olsun yeni bir proje başlatmak istediğinizde ayrı birer virtualenv oluşturmak faydalıdır. çünkü her projenin bağlılıkları farklı olabilir. Böyle küçük bir tavsiyeden sonra Django projemizi başlatmak için aşağdaki kodu giriyoruz

django-admin startproject core . Burada paketi yüklediğimiz için artık Djangoyu kurmak istediğimizde onun bizim için atamış olduğu django-admin komutu yardımıyla bir proje başlatabiliyoruz django otomatik bizim için gerekli ortamları getiriyor. Git bash'te ls komutunu  verirseniz anlamı list'tir listemek yani proje dizininde dosyaları görebilirsiniz. core ben bunu tercih ediyorum siz istediğiniz bir adı verebilirsiniz burada özgürsünüz core derken demek istediğim ana settings dosyamızın burada olduğunu belirtmek. Son olarak coredan sonra boşluk bırakıp bir nokta vermemizdeki sebep projeyi bu dizinde başlat anlamına geliyor, bir sonraki başlıkta Django projesi içindeki dosyaları tanıyalım.

Django Projesi İçindeki Dosyaları Tanıyalım

Core içinde settings adından anlaşılacağı üzere Django üzerinde bizim ayarlarımızı tutan bir dosyadır. Her django projesinin production ve development olmak üzere 2 farklı ayar dosyası vardır. Biz şuan tek development üzerinden ilerleyeceğimiz için settings içinde INSTALLED_APP kısmı bizim önemli. 

Bir app başlattığımızda bunu bu INSTALLED_APP   içinde tanımlamamız gerekiyor aksi halde django bizim olusturdugumuz app'imizi tanımayacağı için hata verecektir.

Templates ayarları bizim template klasör yapılandırma ayarlarımızı belirtiyor yani app içinde mi template kullancaksın yoksa genel bir template klasör içinden mi templatelerini yöneteceksin burası karmaşık gelebilir ama bunları uygulama yaparken çok rahat anlayacakcasınız. 

DataBase ayarları bizim verileri hangi Database'de tutacağımızı belirttiğimiz yer. Örnek olarak PostgreSQL MySQl vs. (bkz:Django hangi DB destekliyor?), biz hazır olarak gelen SQLLİTE Veri Tabanını kullanmaya devam edeceğiz.

Auth password validator kısmı ise Django bizim için hazır user modelleri ile geliyor yani kayıt işlemlerinde de bizi rahat bir şekilde geliştirme yapmamız için destekliyor. Ayrıca istersek bu User Modeli kendimiz genişletebiliyoruz.

Language code isterseniz 'tr' yapabilirsiniz. Bu hangi ülkeye hitap eden bir proje geliştirdiğinize göre değişebilen bir özellik.

En alttada static_url bizim resimlerimizi, css veya javascript dosyalarımızı göstereceğimiz yolu belirtiyor, bunlar zamanla anlam kazanacak kısaca hepsini anlatma çalıştım :).

URL.py bu dosya bizim adından da anlaşılacağı üzere end pointlerimizi oluşturuyor yani clientın istek atabileceği yerleri buralarda tanımlıyoruz. 

şuan bizim projemizde yok fakat yeni bir app oluşturacağımız zaman göreceğiz views.py adında bir adet dosyamız var bunun görevi ise model verilerimizi alıp template içinde kullanmamız için bir ara katman görevi görüyor.

Djangonun çalışma mantığından en son bahsedeceğim ve bitireceğim. Hadi bir projemizi başlatalım ve neler gerçekleşiyor görelim. 

python manage.py runserver bu komut bizim için geliştirme ortamımızı başlatmamızı sağlıyor. Ayarlarda DEBUG=TRUE yani eğer geliştirme ortamında bir hata alırsam bana göster anlamı taşımakta bunu production geçerken FALSE yapacağız.

İlerleyen zamanlarda python manage.py nin sahip olduğu farklı komutlarıda yeri geldikçe detaylarına bakacağız.

Son Söz

Django MVT  yapısını kullanıyor ne demek bu MVT her bir harf sırayla Model View Template olarak adlandırılıyor, Model kısmı bizim SQL yazmadan veritabanını objeler üzerinden hızlıca yönetmemiz için geliştirilmiş, View kısmı ise Model'den gelen verileri Template'e aktarmak için bir ara mantık katmanı olarak düşünebiliriz, şöyle bir örnekle aklınızda daha iyi oturacağına inanıyorum view kısmında Templatemizden gelen form verilerinin kontrollerini yapıyoruz ve model katmanını kullanarak veritabanına kaydediyoruz, Template ise html dökümanlarına verdiğimiz isim. 








Yorumlar