Bir önceki yazımda django kurulumundan bahsetmiştim. Şimdi django ile basit bir application geliştirelim.Öncelikle komut satırında projemizin bulunacağı dizine gelelim. (Örneğin c:projects)Burada “python c:python27Scriptsdjango-admin.py startproject sinema” komutunu girelim. Sinema adında bir proje oluşturacaktır. django-admin.py scriptini istediğiniz dizine taşıyabilirsiniz.

Gördüğünüz gibi sinema adında bir klasör oluşturdu. Klasörün içine girdiğimizde 4 adet dosya görmekteyiz.* manage.py : projenin genel yönetimini yapacağımız script* settings.py : projenin ayarları* urls.py : urlleri belirttiğimiz script* __init__.pyProjemizi oluşturduk, gelelim yapılandırmaya. Sinema klasörünün içinde settings.py dosyasını düzenleyelim. İlk önce DATABASES dict objesinden veritabanını ayarlayacağız.

Resimdeki seçili yerde kullanacağımız veritabanını yazmaktayız. Mysql, Postgresql, Sqlite gibi veritabanlarını kullanabilmekteyiz. Açıklama satırlarında tanımlamalar yazmaktadır. Pratiklik açısından bu örnekte dosya tabanlı bir veritabanı olan sqlite’ı kullanacağız. Proje klasörünün içinde data adında bir klasör açalım. Resimde gördüğünüz gibi veritabanı olarak o dizini belirttik. Bu dizinde otomatik olarak ornek.sqlite adında veritabanı oluşturulacaktır.Tekrar komut satırına gelip “python manage.py syncdb”komutunu çalıştırdığımızda django’nun kendi kullanıcı sistemini için tablolarını ve yönetim için sistem bir ‘superuser’ tanımlamanızı isteyecektir.

Gördüğünüz gibi size superuser tanınlansın mı diye sormaktadır. ‘yes’ dedikten sonra tanınlamayı yapabilirsiniz.Projemizi oluşturmuş olduk, ancak içinde hiç bir application bulunmamaktadır. Yani boş bir projedir, sadece django’nun standart applicationlarını bulundurmaktadır.Öncelikle çalışıp çalışmadığını görmek için django’nun test server’ında çalıştıralım.Komut satırına gelip “python manage.py runserver :8081” dediğimizde 8081 portunda web server’ı çalıştıracaktır.

Evet, django projemiz çalıştı 🙂Django Application geliştirmek
Gelelim django’nun en keyifli kısımlarına 🙂 Sinema projemizde bir application oluşturalım. Örneğin adı filmler olsun. İçinde filmleri, kategorileri v.b. tanımlayalım.Komut satırında “python manage.py startapp filmler komutunu girelim. Proje dizininde filmler adında bir klasör oluşturulacaktır. İçinde 4 adet dosya bulunmaktadır.
* models.py* tests.py* views.pyModellerimizi models.py içinde class olarak tanımlayacağız. Film, Kategori gibi…views.py’de ise sitede gözükecek kısımları tanımlayacağız. models.py dosyasını düzenleyelim. Kategori ve Film modelini oluşturalım.from django.db import modelsclass Kategori(models.Model):KategoriAdi = models.CharField(max_length=255)class Film(models.Model):FilmAdi = models.CharField(max_length=255)FilmAciklama = models.TextField()Yonetmen = models.CharField(max_length=255)Kategori = models.ForeignKey(Kategori)
Django bize bu modelin veritabanı kısmını otomatik oluşturacak ve admin panelininden düzenlenmesini sağlayacaktır. Gördüğünüz gibi hiç veritabanına girmeden modellerimizi ve ilişkileri oluşturabilmekteyiz. Veritabanı işlemlerimizin tamamını ORM ile yapabilmekteyiz. Tamamen objelerle hiç sql koduna girmeden CRUD(create-read-update-delete) işlemlerini yapabiliriz.Öncelikle filmler application’unu projemizde tanımlayalım. Bunun için ana dizindeki settings.py’de INSTALLED_APPS dizisine ‘filmler’ uygulamasını da ekleyelim.INSTALLED_APPS = (‘django.contrib.auth’,’django.contrib.contenttypes’,’django.contrib.sessions’,’django.contrib.sites’,’django.contrib.messages’,’filmler’)
Komut satırına gelip “python manage.py sql filmler” dediğimizde oluşturulacak tabloların sql komutlarını görebiliriz

Sql komutunu çalıştırmak için veritabanını tekrar senkronize etmemiz gerekir.Bunun için tekrar “python manage.py syncdb” komutunu çalıştıralım.

ORM’nin Nimetleri
Projemizin ilk application’ını oluşturduk. Şimdi birkaç veri ekleyelim.Komut satırında “python manage.py shell komutunu girelim. Python komut satırı açılacaktır.
ORM’nin açılımı Object-Relation Mapper’dır. Veritabanını objeler ile yönetebilmemizi sağlar. Veritabanı işlemlerini yaparken objeler üzerinden işlem yapmak hem çok daha pratiktir hem de programı çok daha verimli geliştirmemizi sağlar.Burada ilk önce oluşturduğumuz modeli import edelim.>>> from filmler.models import Kategori
Import ettikten sonra direkt Kategori yazalım. Bize “” olarak döndürecektir. Yani oluşturulan tabloya class seviyesinde erişebilmekteyiz.Kategori sınıfından yeni bir instance oluşturalım.>>> ornek = Kategori()>>> ornek.KategoriAdi = “Aksiyon”
Ve bunu kaydedelim>>> ornek.save()
Aksiyon adında bir kategori oluşturduk. Şimdi buna bir film ekleyelim.>>> deneme = Film()>>> deneme.FilmAdi = “Into The Wild”>>> deneme.FilmAciklama = “Guzel bir film”>>> deneme.Kategori = ornek>>> deneme.save()
Filmimizi de oluşturduk. Kategorisini belirtirken Aksiyon kategorisini tanımladığımız instance’ı verdik.Bir sonraki yazıda view, template ve django admin paneli konusuna değineceğim.Fatih ERİKLİ