Python Django Framework İle Başlangıç Seviyesinde Site Yapım Aşamaları

Web programlama artık çok kolay. Backend alanında son yıllarda tercih edilen django ile örnek çalışma sayesinde pythonda web programlayalım.

2022 yılının en revaçta olan ve iş ilanlarında yazılımcıların bilmesi gereken diller kategorisindeki başlıca dillerden biri olan python yazılım dili; öğrenmesi kolay olması, veri analizinden web programlamaya hatta makine öğrenmesine kadar birçok alanda kullanılması sebepleriyle ilk sıralarda yerini aldı.

Statics & Data'dan edindiğim verilere göre python django framework, dünyada en çok kullanılan 2. frameworkdür.(1.) [Most Popular Backend Frameworks (2012/2022)] Medium.com'a göre django framework, en çok tercih edilen 2. framework olarak yerini almıştır.(2.)[10 Best Backend Frameworks for Web Development in 2022] Önemi artış gösteren bir framework ile başlangıç seviyesinde bir proje geliştirmezsem kendimi rahat hissetmeyeceğim için sizlerle birlikte geliştirme yapmaya karar verdim. Umarım django framework ile ilgilenecekler için yardımcı olur.

Başlamadan önce belirtmek isterim; kullandığım IDE pyCharm'dır. İsterseniz visual studio kullanabilirsiniz. PyCharm üzerinden anlatımı gerçekleştireceğim.

Kurulum Aşaması

Django'yu pyCharm'a indirmek için aşamalar;

  1. File>Settings>Project>Python Interpreter>"+" imleci>Arama Çubuğuna Django yazın>İnstall package butonuna tıklayın>Succesfully mesajı geldiğinde işleminiz bitecektir.
  2. Terminal alanına " django-admin startproject mysite" yazarak proje dosyanızı oluşturacaksınız. Burada; mysite yerine başka isim verebilirsiniz.
  3. Oluşturacağınız mysite klasörüne django ile ilgili gereken dosyalar yüklü vaziyette gelecek.
  4. Terminal alanına "py manage.py runserver" yazarak "http://127.0.0.1:8000/" server linki gelecek. Bu linke tıkladığınızda django'nun tebrikler sayfasına erişeceksiniz.
  5. Uygulamamızı geliştirmek amacıyla terminal alanına "py manage.py startapp polls" yazarak uygulama klasörünüzü oluşturacaksınız. Polls yerine başka isim verebilirsiniz. Polls klasörüne django ile ilgili dosyalar yüklenecek. Tekrardan "py manage.py runserver" yazarak tebrikler sayfasına erişeceksiniz. Artık herşey daha kolaylaşacak. Hadi şimdi kısaca otomatik kurulumu sağlanan mysite ve polls klasörlerini inceleyelim hemen ardından web sitemizin html uzantılı sayfalarını barındıracak temlates klasörünü inceleyelim. Aynı zamanda kodlama yapısı üzerinde çalışalım.
Mysite Ve Polls Klasörleri

MYSİTE :

  • Mysite/kök dizin, projeniz için bir kapsayıcıdır. Adı Django için önemli değil; istediğiniz herhangi bir şeyle yeniden adlandırabilirsiniz.
  • __init__.py: Python'a bu dizinin bir Python paketi olarak kabul edilmesi gerektiğini söyleyen boş bir dosya.
  • settings.py: Django projesi için ayarlar yapmayı kapsayan bir dosyadır.
  • urls.py: Django projesi için link çalışmalarında kullanılır. Polls sayfası içerisindeki urls.py ile bağlı çalışır. Sayfalar arası geçiş görevinde önemli bir rolü vardır.
  • asgi.py: Projemize hizmet verecek ASGI uyumlu web sunucuları için bir giriş noktası.
  • wsgi.py: Projemize hizmet verecek WSGI uyumlu web sunucuları için bir giriş noktası.

POLLS :

  • admin.py: Yönetici panelini veri tabanı ile ilişkilendiren kodların barınacağı sayfadır.
  • models.py: Veri tabanı işlemleri için tasarlamış sayfadır.
  •  urls.py: Bu sayfa otomatik olarak gelmez. Yazılımcı tarafından oluşturulur. Site içerisinde sayfalar arası geçiş yapmak için link çalışmalarında kullanılır.
  • views.py: M.V.T yapısının köprü vazifesi gören sayfasıdır. Models sayfası ile template klasörü içerisindeki html uzantılı sayfalara veri akışını ve sayfa baplantılarıyla görevli kritik bir sayfadır.
  • templates: Web sitemizi parçaladıktan sonra html uzantılı sayfaların barındırılacağı klasördür. Mysite içerisindeki templates ile karıştırılmamalıdır.
  • static: Css, javascript gibi html uzantılı sayfaları etkileyen sayfaları içerisinde barındırır.

TEMPLATES:

İçerisinde; web sitesinin header ve footer gibi her sayfasında gösterilen, sayfaların ortak kullandığı html sayfaları bulunur. Mysite dosyasında bulunana settings.py sayfasında ayarlaması yapılır.

M.V.T İle Kod Yapısı

Öncelikle mysite içerisndeki settings.py sayfasında bazı ayarlamalar yapılır;

Yukarıdaki görselde; polls dosyamızı uygulamada çalıştırmak için dosya adı olan polls diye kodluyoruz.

Yukarıdaki görselde; 'DIR' komutunun bulunduğu yere [BASE_DIR / "templates"] yazarak html uzantılı dosyalarımızı templates adındaki dosyada barındıracağımızı bildiriyoruz.

Yukarıdaki görselde; css, javascript ve images dosyalarının toplanacağı alanın adını static olarak belirliyoruz. Ardından; polls>templates>static dosyasını oluşturuyoruz.

Şimdi mysite içerisindeki urls.py'de sıra;

Yukarıdaki görselde; polls klasöründeki urls.py sayfası import yani dahil edilmektedir. Böylece sayfalar arası geçiş sağlanacaktır.

Artık sırada polls klasörü içerisindeki sayfaları incelemek var.

Web sitem cv tarzında tasarlandı. Görselde, hakkımda sayfası bulunmaktadır. Fark edildiği gibi hakkımda, deneyimler, eğitim, yetenekler, beceriler, sertifikalar gibi alanlar turuncu menüde yer almaktadır. Bu alanların hepsi farklı bir sayfayı temsil ettiği için web sitesini parçalayarak kontrol altına almamız gerekir. Böylece düzeni sağlamış oluruz.

Yukarıda, templates içinde parçalanmış sayfalar bulunmaktadır. About, certifica, education, experience, interest ve skils sayfalarını index.html de toplayacağız.

Parçalara ayırdığımız templatelerimizden menu.html sayfası tüm sayfalarda ortak olduğu için index.html sayfasına extends ediyoruz. load static kodu ile css ve javascript dosyalarımızı sayfaya taşıyoruz. Block content ve block title kodları ile html kodlarını index.html sayfamıza include ediyoruz. Tabi block kodlarını menu.html sayfasına da kodlamız gerekiyor. Extends, load static, ve block kodlarını diğer html sayfalarımıza da kodlamamız gerekiyor. Yoksa sayfalarımızı siteye yansıtamayız.

Şimdi sırada views.py sayfası var.

Views.py sayfası M.V.T yapısının en kritik noktasıdır. Başlangıç seviyesinde proje olduğu için çok kısa bir kodlama çalışması gerçekleştirdim. Ancak sayfalar arası geçişlerin dinamik olduğu sitelerde birden fazla fonksiyon kullanılmaktadır. Benim cv sitem url bağlantıları içermediği için, statik olduğu için tek fonksiyon altında topladım. Django shortscuts kütüphanesinden render methodunu import ediyoruz. Çünkü, render() metodu ilk parametre olarak uygulamaya yapılan request nesnesini ilk parametre olarak alması gerekiyor. İkinci parametre olarak ise döndürülecek html sayfasının ismini alır. Ardından models veri tabanı sayfamızı views sayfamıza dahil ediyoruz. Models.py içerisindeki Hakkımda, Deneyim, Egitim, Yetenek gibi classları views sayfamıza taşıyoruz. Son olarak index fonksiyonuna hepsini kodluyoruz. Böylece; objects.all() komutuyla veri tabanındaki verileri, index.html sayfasına yönlendiriyoruz. İndex.html sayfasında bulunan ilgili sayfalara ilgili verileri {% for .. in .. %} komutları sayesinde gönderiyoruz(index.html sayfası bir üstte).

Veri tabanından bahsetmişken artık sırada models.py sayfamız var.

Models.py sayfamız, django.db kütüphanesinden models methodunu sayfamıza yüklüyoruz. Ardında; veri tabanımızı oluşturmak için php'de olduğu gibi veri tabanı uygulamasına(phpmyadmin gibi) gitmiyoruz. Models.py sayfasından classlarımız oluşturuyoruz. Sınıflarımıza veri tabanında kullanacağımız tabloların adını vermemiz daha sağlıklı olacaktır. Sınıflarımızın içerisine, hem web sayfasında olmasını istediğimiz verileri oluştururuz hem de veri tabanından select, insert, update ve delete işlemlerini gerçekleştireceğimiz admin paneline yönlendirmeler gerçekleştirecek kodlamaları gerçekleştiririz. Her sınıfa models kütüphanesini models.Models kodu ile yükleriz.

Şimdi sırada admin paneli sayfası için admin.py sayfasını düzenlemek var.

Admin.py sayfamıza, models safamızdaki Hakkımda, deneyim vb. classları import ediyoruz yani taşıyoruz. Amacımız yönetici panelinde verileri CRUD işlemi ile gerçekleştirebilmektir. Register komutu sayesinde yönetici panelindeki ilgili alanlara veriler işlenir. Peki veri tabanını hangi komutla oluşturmalıyız?

Terminal alanına; py manage.py makemigrations komutunu yazıyoruz enter diyip hemen alt satıra, py manage.py migrate komutunu yazıyoruz. Veri tabanımız hazır hale geliyor. py manage.py shell komutu ile veri tabanımızda tablo oluşturabilir, verileri insert edebiliriz. Bunu için django'nun sitesine giderek inceleme yapabilirsiniz.

Admin panelimizi kullanabilmek için py manage.py createsuperuser komutunu terminale yazıyoruz. Kullanıcı adı ve şifremizi oluşturuyoruz. İşlem sonlandıktan sonra runserver komtunu çalıştırıyoruz. 127.0.0.1:8000/admin/ surver komutu ile admin panelinize erişebilirsiniz. Burada CRUD işlemlerini gerçeklştirebili, grup açabilir, isetğiniz doğrultusunda sayfanıza başka yöneticiler atayabilirsiniz. Bunların hepsi hazır vaziyette gelmektedir.

Temel düzeyde python django framework ile web projesi gerçekleştirmek bu kadar kolay. Kabul ediyorum uzun bir anlatım oldu fakat bir gün herkes django için sıraya girecek önemini şimdiden belirteyim istedim :)

Umarım faydalı olabilecek bir kaynak olmuştur.

Kaynakça:

(1): https://statisticsanddata.org/data/most-popular-backend-frameworks-2012-2022/#:~:text=At%20the%20first%20place%20of,with%2010.12%25%20of%20the%20total.

(2): https://medium.com/javarevisited/10-best-backend-frameworks-for-web-development-8d19e337f774