Basit Bir Django Uygulaması (1)

2015, Oct 19    

Bu aralar sürekli farklı farklı şeylere bakıyorum. Bugün kendime konu olarak Django’yu seçtim. Ha böyle daldan dala atlamam iyi bir şey mi ondan emin değilim. Ama şu an için bir sorunum yok diyelim. En azından Python ve Javascript temelinden ayrılmadığım için benim için çok farklı gelmiyor. Ki zaten Django’yu öğrenmiş ama kısmen unutmuştum. Bugün biraz bilgi tazeleme oldu benim açımdan. Şimdi sizinde unuttuklarınızı hatırlamanız ya da bilmiyorsanız belki de öğrenmeniz için oturdum adım adım yazdım.

Öncelikle bilgisayarınızda python, pip ve django kurulu olmalı. Python ve pip kurulu ise djangoyu

sudo pip install django

diyerek kuruyoruz. Sonrasında ise yeni projeyi bulunduracağımız dosyanın içinde aşağıdaki komutu çalıştıralım.

django-admin startproject projeadi

Dosyaları biraz karıştırın. Bende karıştırayım. Dikkat edilecek manage.py dosyası var. Kendisi sağolsun önemli komutlar çalıştırıyor. Mesela;

python manage.py runserver

dediğimizde yerel bir web sunucusu çalıştırıyor localhostta. Varsayılan olarak 8000 numaralı portta çalışıyor.
settings.py —> ayar dosyası isminden anlaşılacağı gibi
urls.py —> routing/yönlendirme işleri için

Bir uygulamanın parçaları şu şekilde;

models.py –> veri katmanı
admin.py –> admin arayüzü
views.py –> kontrol katmanı
tests.py –> uygulama testleri
migrations/ –> veritabanı işlemleri için dosyalar

İlk uygulamamızı aşağıdaki komutla oluşturalım.

python manage.py startapp uygulamaadi

Yeni dosyalarımız oluştu bile. Şimdi uygulamamızı settings.py dosyası içine yazalım. settings.py içinde INSTALLED_APPS kısmına ‘uygulamaadi’, şeklinde bir ekleme yapalım. Django Project websitesinden Documentation kısmından daha detaylı bilgilere ulaşabilirsiniz.
settings.py içinde önemli birkaç yer var.
INSTALLED_APPS –> uygulamaları eklediğimiz yer
TEMPLATES –> şablonları eklediğimiz yer
STATICFILES_DIR –> css gibi statik dosyaları eklediğimiz yer
DEBUG –> deploymentta false yapılması iyi bir iş olur :)
DATABASES –> postgre, mysql falan kullanıldığında değiştirmeniz gereken kısım.

–MODELLER–

->Uygulamanın veri katmanı
->Veritabanı yapısını tanımlar
->Veritabanına sorgu yapmayı sağlar.
->models.py dosyasındadır

Örnek bir models.py dosyası;

from django.db import models

class Item(models.Model):
    title= models.CharField(max_length=200)
    description = models.TextField()
    amount = models.IntegerField()

Çok basit bir sınıf yapısı var. Bunu ilk yazdığımızda hemen veritabanında karşılık gelen sınıf oluşturulmuyor. Bunun için migration denilen bir olay var. Modeller veritabanının yapısını belirlerken migration veritabanı yapısını değiştirmek için betikler üretir. Yeni bir model eklenince, yeni alan eklendiğinde, alan çıkarıldığında, bir alanın özelliği değiştirildiğinde migration gereklidir.

Bu kadar bahsettik. Migration nasıl yapılır. 2 komutu var manage.py sağolsun.

python manage.py makemigrations

-> sonradan kullanılmak üzere migration dosyalarını üretir.
-> varolan model alanları ile varolan veritabanı tablolarını kullanır.

python manage.py migrate

-> çalıştırılmamış bütün migration dosyalarını çalıştırır.
-> –list ile geçmişi gösterir.

Şimdi python manage.py migrate komutunu çalıştıralım. Böylece uygulanmamış tüm migration dosyaları veritabanına uygulanacak.

sudo apt-get install sqlitebrowser

komutu ile sqlite veritabanını görüntülemek için gereken programı indirelim. Programı açıp open database diyerek django projemizdeki sqlite veritabanımızı seçelim. Orada oluşturduğumuz sınıf uygulamaadi_item olarak görünecektir.