9 Şubat 2015 Pazartesi

Python ve Django ile Web Tasarımı(AB2015)


    Akademik Bilişimde  "Python ve Django ile Web Tasarımı" kursuna katıldım.4 gün eğitim aldık.İlk gün python ikinci gün postgresql'den veritabanı oluşturma ve djangoya giriş üçüncü ve dördüncü gün ise uygulama yaptık. Yaptığımız proje web arayüzlü bir bilet sistemiydi.Öğrendiklerimin bir kısmını paylaşacağım sizinle.

     Django , Python  Programlama Dili ile hazırlanmış yüksek seviyeli bir web çatısıdır. Modüler ,pragmatik bir tasarımla hızlı bir şekilde web uygulamaları geliştirmenize olanak sağlayan açık kaynak kodlu bir web uygulamaları geliştirme platformudur.
   Biz  kursta veritabanı oluşturmak için postgresql kullandık. Postgresql kullanmamızın sebebi zengin veri tiplerini desteklemesi ve açık kaynak kodlu olmasıdır. Postgresql buradan indirebilirsiniz. Arayüz olarak eclipse  django Ide si olanı  kullandık.

  • psql ile postgresql çalıştırıp kullanıcımızı ve veritabanımızı oluşturuyoruz.
  • create user ab2015user with password 'ab2015password';
        //ab2015 kullanıcısı oluştur parola ver
  • create database ab2015db; 
      //veri tabanı oluşturduk.
  • grant all privileges on database ab2015db to ab2015user;
       // database üzerindeki tüm yetkileri oluşturduğum kullanıcıya verdim.
  • /q ile posgresqualden çıkabilirsiniz.
  • /dt ile tablolarınızı görebilirsiniz.

Bilgisayarınızda pythonun  kurulu olması gerek. Linux bilgisayarlarda kuruludur fakat kurulu değilse burdan bakabilirsiniz. Djangoyu kurmak için adresinden dosyayı indiriniz. Daha sonra dosyayı bir klasöre açın terminalden dosyanın içine girin ve pyhton setup.py install komutunu çalıştırın.

$ tar xzvf Django-1.3.tar.gz //dosyayı çıkartmak için
$ cd /downloads/Django-1.3  //içine girmek için
$ python setup.py install   //yüklemek için.

Kurulup kurulmadığını anlamak için python shell'ine geçip "import django" yazın hata vermezse kurulum gerçekleşmiştir demektir

Yüklemeleri yaptıktan sonra eclipse girip projeyi oluşturuyoruz. Oluşturduktan sonra settings.py dosyasına girip aşağıdaki kısımları değiştiriyoruz.

DATABASES = {
    'default': {
        'ENGINE':
        'NAME':
        'USER':
        'PASSWORD':
        'HOST' :
    }
}

ENGINE kullanacağımız veritabanını gösteriyor.
NAME veritabanınızın ismi ya da yolu.
Diğerlerini tahmin edebilirsiniz :)
Yazdığınız uygulamayı INSTALLED_APPS  altında import etmeyi unutmayın.
settings.py  dosyası altında bir çok ayar vardır bunlar zamanı geldiğinde değiştirilecektir.
    Tarayıcınızda http://127.0.0.1:8000 adresine gidin. Eğer herşey yolunda “It Worked!” ile başlayan, Django’nun çalıştığını söyleyen bir mesaj göreceksiniz.
Dosya yapısı:
konsoldan "django-admin.py createproject" denildiğinde yeni proje oluşturulur.
manage.py yi oluşturduktan sonra proje adını değiştirmek çokta önemli değil.
proje
   manage.py
   proje
      setting.py //ayar dosyaları bulunur.
      urls.py   //urls ayarlarını kolay yönetmek içindir.
      wsgi.py
   userprofile //uygulamayı start app applicatinadı(userprofile) oluşturduk
    migrations  //models.py de uyguladığımız tüm değişiklikler version halinde altında sıralanıyor.
       __init__py
    admin.py
    models.py
    tests.py
    views.py
    __init__.py









"$ python manage.py runserver"
Projenin çalışıp çalışmadığını kontrol etmek için konsola yukarıdaki komutu yazalım. Bunun yerine eclipse arayüzünde çaıştırabilirsiniz. Run django kısmını kullanarak çalıştırılabilir.
    Models.py ye djangonun kendi syntaxlarını kullanarak oluşturuyoruz modelleri. class ları kullanarak modelleri oluşturuyoruz.  Model isimlerinden sonra gelen “(models.Model)” yazdığımız sınıfın biraz önce dosyamıza eklediğimiz models dosyasının içinde bulunan Model sınıfının bir alt sınıfı olduğunu belirtiyor. Django’da oluşturacağımız tüm modeller Model sınıfının bir alt sınıfı olmalıdır. Modeller oluşturulduktan sonra alanları ekliyoruz.
       İsim  için CharField işimizi görür. Tarih bilgileri için DateTimeField , email için ise EmailField() alanlarını kullanabiliriz.ForeignKey ilişkili alanlar için kullanabiliriz.
 Modelleri tanımladıktan sonra eclipse arayüzünden projenin üstünde sola tıklayıp djangodan shell with django enviroment kısmından kabuğu açıp import işlemini yapıyoruz . "from projeadı.models import (class)"  bu komutu yazıyoruz import etmek için.

      Django admin panelinin büyük bir kısmını kendiliğinden üretecektir, bizim yapmamız gereken ise sadece paneli aktif hale getirmek.Admin panelini aktifleştirmek için settings.py dosyasını açıp , INSTALLED_APPS kısmına django.contrib.admin önündeki # işaretini kaldırıp admin panelini projemizde kullanacağımız uygulamalar arasına eklemiş olduk.
urls.py dosyasında da yapmanız gereken değişiklikleri yaptıktan sonra komut satırından($ python manage.py (veritabanı)) veritabanı için gerekli tabloları oluşturdu. Projeyi çalıştırmak için komut satırından ($ python manage.py runserver ) komutunu giriyoruz ya da arayüzden "Run as->django" seçerek projeyi çalıştırıyoruz.
   "0 errors found Django version 1.3, using settings ‘blogum.settings’ Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C."
   Eğer herşey yolunda gittiyse yukarıdaki gibi bir cevap gelecek,şimdi tarayıcınızda http://127.0.0.1:8000/admin/ gidin .Superuser oluştururken kullandığınız parola ve kullanıcı ismini kullanarak giriş yapın. Artık admin panelini görüyor olmalısınız.
    
        View’imizde render ve context kullanmaktayız. Bu fonskiyonlar view’deki değişkenleri şablona bağlamamızı sağlıyor. Django bu yöntem oldukça sık kullanıldığı için Django’yu geliştirenler bize kısa bir yol hazırlamışlar : render_to_response
render_to_response fonskiyonu sayesinde render ve context’i her defasında kullanmak zorunda kalmıyoruz. View’imizi render_to_response kullanarak değiştirelim. render_to_response 2 parametre alıyor. İlk parametremiz şablon ismi (anasayfa.html). Diğer parametre ise şablona göndermek istediğimiz değerleri tutan bir Python sözlüğü.

Django hakkında daha fazla bilgi için kendi sayfasına bakabilirsiniz.
Yararlanabileceğiniz bazı siteler:
 http://www.djangobook.com/en/2.0/index.html
 4 bölümlük türkçe dersleri


Kursta yaptığımız bilet sisteminide githubta bu hesapta bulabilirsiniz.