Python Django nedir ? Nasıl yüklenir?

Django , Python programlama diliyle geliştirilmiştir. Açık kaynaklıdır. Hızlı, etkin ve kolay bir web geliştirme framework’üdür. Hızlı kod geliştirilebilir. Python biliyorsanız öğrenmesi gayet kolay bir programlama dilidir. Az kod çok iş prensibi ile çalışır. Programlama literatüründe DRY olarak bilinen (Don’t Repeat Yourself : kendini tekrar etme) bu framework’un mottosudur. Admin paneli hazır olarak gelmektedir. Yapılan yanlışlarda detaylı hata raporu sunabilir. Veritabanı yönetimi kolayca sağlanabilir. Bu kadar yararlarından bahsetmişken bu framework’den yararlanan popüler bazı web sitelerini paylaşmasak olmaz . Bunlar , NASA, instagram, pinterest gibi yakından takip ettiğimiz siteler.
Django Nasıl Yüklenir:
1-)pip install virtualenv : sanal python ortamını bilgisayara kurmayı sağlar. Kurmak istenilen proje dizinine gidilip bu komut yazılır.
2-)virtualenv <projeAdı>
3-)<projeAdı>\Scripts\activate: başlatmak için.(windows cmd)
4-)<projeAdı>\Scripts\deactivate : sonlandırmak için.(windows cmd)
. <projeAdı>/Scripts/activate: başlatmak için. (gitBash)(noktadan sonra bir boşluk var)
deactivate: sonlandırmak için. (gitBash)
django-admin startproject <projeAdı> . : django projesi başlatmak için. Nokta koymamızın nedeni proje dosyalarının bulunduğumuz klasöre kurulması.
Bu şekilde her django proje dosyasında bulunması gereken dosyalar proje dosyasına eklenmiş oldu.
__init__.py : ait olduğu modülün python modeli olduğunu belirtiyor. İçinde hiçbir şey yazmaz sembolik bir anlamı vardır.
settings.py: projedeki ayarların yapılacağı proje dosyası.
- INSTALLED_APPS: projede kullanılacak olan application’ları gösterir.
- TEMPLATES: HTML dosyalarında if kontrolü for döngüsü gibi yapıları kullanabilmemizi sağlayan bir katman.
- DATABASES: adından da anlaşılacağı gibi database bağlantılarının yapıldığı kısım. Varsayılan olarak SQLite kullanılır.İstenirse buradan değiştirilebilir.
urls.py: web sayfası için gerekli URL adreslerinin tanımlandığı proje dosyasıdır.
wsgi.py: web sunucusu ile ilgili ayarların yapıldığı yer.
python manage.py runserver komutu ile manage.py dosyası çalıştırılır.Djangoda komutlar manage.py dosyası ile çalıştırılır. Ardından gelen ekranda Starting development at http://127.0.0.1:8000/ (bu link web sayfasının linkidir) linki kopyalayıp browserda çalıştırdığımız zaman web sayfamızdaki ana ekrana yönlendiriliriz.Basit bir arayüzü olan django tarafından varsayılan bir web sayfayısı görüntülüyebilirsiniz.
python manage.py migrate: uygulamaları veritabanına taşımak için kullanılır. Bu şekilde db.sqlite3 dosyası projede oluşur.Dosyaları veritabanına migrate ettikten sonra admin arayüzüne ulaşılabilir.
urls.py dosyasının içinde yer alan urlpatterns komutu içindeki path() komutundan admin url’si görülebilir.http://127.0.0.1:8000/admin/ ile admin arayüzüne girilebilir.
- python manage.py createsuperuser komutu çalıştırılır.
- ardından gelen komutlarda Username , Email ve Password tanımlanarak admin oluşturulabilir.
urlpatterns : web sitesindeki adreslerin tanımlandığı yerdir.
Admin oluşturulduktan sonra Username ve Password ile http://127.0.0.1:8000/admin/ adresinden Django yönetim sistemine girilebilir.
Django yönetim sistemi Gruplar kısmından kullanıcıların yetkilendirilmesi düzenlenebilir. Kullanıcılar kısmından kullanıcı ayarları ayrıntılı bir şekilde gerçekleştirilebilir.
Yeni bir uygulama oluşturmak için komut satırına gidilir.
python manage.py startapp <uygulamaİsmi> komutu ile uygulama klasörü oluşturulur.Bu dosyalar:
- __init__.py: ait olduğu modülün python modeli olduğunu belirtiyor. İçinde hiçbir şey yazmaz sembolik bir anlamı vardır.
- admin.py: yönetim paneliyle ilgili ayarların bulunduğu yerdir. Modelin yönetim arayüzünü sağlamak için bu admin dosyası sağlanmalıdır.
- models.py: veritabanı ile ilgili sorgulama,kontrol vs uygulamaların yapıldığı yerdir.
- tests.py: test,debugging kontrollerinin yapıldığı yerdir.
- views.py: kullanıcılardan alınan isteklere göre onlara görüntü sunan python fonksiyonudur. Görüntü derken bir websitenin görünüşü olarak düşünülebilir. Bir sayfa için sunucuya istekte bulunulur ve response olarak görsel sayfaya erişilir. Bu görüntüyü sağlayan araç gibi düşünülebilir. Kısaca ekranda görülen komutun arka tarafta nasıl çalışacağı ile ilgili kodlamanın yapıldığı yer.
python manage.py runserver 8080 : 8080 port numarası ile farklı bir port açılabilir.
Model felsefesi yaratmak
Model, verilerinizle ilgili tek ve kesin gerçek kaynaktır. Sakladığınız verilerin temel alanlarını ve davranışlarını içerir. Django, DRY(Don’t Repeat Yourself)) İlkesini izler. Amaç, veri modelinizi tek bir yerde tanımlamak ve ondan otomatik olarak bir şeyler türetmektir. Bu, geçişleri(migrations) içerir — örneğin, Ruby On Rails’in aksine, geçişler(migrations) tamamen modeller dosyanızdan türetilir ve esasen Django’nun veritabanı şemanızı mevcut modellerinizle eşleşecek şekilde güncellemek için kullanabileceği bir geçmiştir.
- Modellerinizi değiştirin (models.py’de).
- Bu değişikliklere geçişler oluşturmak için python manage.py makemigrations çalıştırın
- Bu değişiklikleri veritabanına uygulamak için python manage.py migrate komutunu çalıştırın.
Django’da, web sayfaları ve diğer içerik views ile sunulur. Her views bir Python işlevi (veya class-based views durumunda yöntem) ile temsil edilir. Django, istenen URL’yi (kesin olmak gerekirse, URL’nin alan adından sonraki kısmını) inceleyerek bir görünüm seçecektir.
urls.py → views.py → index.html
model.py →paralel nesne sınıf tanımlama yeri
views.py urls.py .html dosyası sürekli birbirleri ile bağlantılı haldedir. kullanıcı etkileşimi .html dosyası ile başlar urls.py dosyasında linke bakılır ordan görüntüyü sağlayacak views.py dosyasına aktarılır. argümanlar çeşitlilik göstermektedir. Fakat önemli olan datanın veya etkileşimin akış şeklidir. farklı app’ler oluşturularak uygulama katmanlanmaya çalışılır. Bu şekilde fonksiyonların birbirinden bağımsızlaşması sağlanır.
Model-View-Template (MVT) MVC’den biraz farklıdır. Aslında, iki model arasındaki temel fark, Django’nun bizzat, Kontrolör(Controller) kısmına (Model ve Görünüm arasındaki etkileşimleri kontrol eden Yazılım Kodu) dikkat çekerek, bizi şablonla baş başa bırakmasıdır. Şablon, Django Şablon Dili (DTL) ile karıştırılmış bir HTML dosyasıdır. Geliştirici modeli sağlar, görünüm ve şablon daha sonra onu bir URL’le eşler ve Django kullanıcıya yapıyı sunmak için işlemi tamamlar.
Fonksiyonlar arasında side effect engellenmeye çalışılmaktadır. Side effect fonksiyonun global bir değişkeni değişmemesi gerekirken değiştirmesi olayına denir. Buradaki amaç fonksiyonun tanımının dikkatli yapılması ve uygulamaya olumsuz etkilerinden kaçınılmasıdır. templates’ler tamamen şablonlar olarak düşünülebilir. .html dosyaları olarak görselliği sağlar. crispy_forms düzenli görsellik için kullanılan bir kütüphanedir. django’da herşeyin kolay olarak yapılması için çeşitli kütüphaneler mevcuttur. kütüphaneler kullanırken fonksiyonların birbirleri ile olan etkileşimlerine dikkat edilmelidir.
Decorator’lar fonksiyonlara farklı ekstra fonksiyonlar katmak için kullanılabilir. Fonksiyonlar başka bir fonksiyonun içinde tanımlanabilir ve başka bir fonksiyona argüman olarak iletilebilir.
login logout gibi basit web app’leri bootstrap yardımı ile django’da kolayca programlanabilir. Ayrıntılı bilgi için ;
Side effect:
Template : bir internet sitesinde dikkat ederseniz bütün sayfalarda bazı yapılar sabit olarak bulunmaktadır. header ve footer’lar gibi. Template’ler tasarlanırken bunlar sabit bir .html dosyası olarak tasarlanıp kullanıcı farklı sayfalara yönlendikçe sayfanın özelliğine göre değişecek özel yapıları o sayfanın .html dosyası içerisinde özel olarak tanımlanır ve dinamik yapıda tanımlanır. Yani bunu OOP yapısındaki inheritance özellikleri gibi düşünebiliriz. Parent’ın temel özellikleri alınır ayrıca o sınıfın(sayfanın) kendine has özellikler de eklenebilir. Her sayfada temel html sayfa yapısını tekrar tekrar yazmanın önüne geçilmiş olunur. bu html dosyasının içerisinde sitenin görsel yapısını da oluşturan .css .js gibi yapılar da bulunur. Aynı zamanda görsellik için bootsrap kütüphanelerinden de yararlanılır. Bu temel html dosyasının adı genelde base.html olarak seçilir.
nav.bar : navigasyon .html’i olarak düşünülebilir. sitenin header kısmında bulunan home, about, profile gibi yapıların yönlendirici olarak yapılandırılmasını sağlayan kısımdır. sitenin içerisinde yol gösterici olarak düşünülebilir. herhangi bir bağlantıya tıkladığımızda verilen tepkinin programlandığı yerdir. yani profile göstergesine tıkladığımızda profilimize yönlenmemiz gibi.
Bu yazımda hazırladığım Movie Recommender web app için kullandığım Python Django hakkında zorluk yaşadığım konuları paylaşmak istedim. Bu projeyi de sizlerle paylaşmak isterim.