24 Kasım 2013 Pazar

Görünümler ve Adresler (Merhaba Dünya)


Merhaba Arkadaşlar,

Bu hafta sizlere Django'da görünümler ve adresler hakkında bilgi vermek istiyorum. Ayrıca bütün programlama dillerinde geleneksel hale gelen "Merhaba Dünya" örneğini yapacağız.

İlk olarak proje oluştururken Django tarafından oluşturulacak web sayfasını ve bu sayfaya erişmek için kullanacağımız adresi hazırlayalım. Django'yu diğer web geliştirme programlarından ayıran bir özelliği de; bir web sayfasının görüntülenebilmesi için öncelikle sayfayı oluşturacak görünüm'ü hazırlamamızın gerektiğidir. Django'da görünüm'den kasıt, tarayıcıdan adres çağrıldığında işletilecek olan işlevdir.

Şimdi geçen hafta oluşturduğumuz deneme projesini kullarak sayfamıza "Merhaba Dünya" yazısını yazdıralım. Bu işlevi, proje dosyası içerisinde olmak şartıyla herhangi bir Python dosyasına yazabiliriz. Ama biz kendi oluşturacağımız views.py dosyasına yazalım. Kendi kullandığımız herhangi bir metin düzenleyicisi ya da Python'un idesini kullanarak deneme/views.py konumuna aşağıdakı satırları yazalım.

 deneme/views.py
-----------------------------------------------------------
# -*- coding: utf-8 -*-
from django.http import *

def  merhaba_dunya (request):
    return HttpResponse(u'Merhaba Dünya')
-----------------------------------------------------------

Burada tanımladığımız merhaba_dunya() fonksiyonu, tarayıcıya 'Merhaba Dünya' yazısını gönderecektir.Yani tarayıcıya gönderilecek olan metin HttpResponse() nesnesi olarak döndürülür. Ayrıca Python'u unicode karakterlerini kullanmaya zorlamak için  Django'nun kullanacağı bütün Python dosyalarının başına # -*- coding: utf-8 -*-  satırını yazmalıyız.


Web tarayıcısından bir adresi istediğimizde Django çerçevesinin hangi fonksiyonu çağıracağına urls.py dosyası içerisinde belirtiriz. Bu dosya geçen hafta anlattığımız gibi Django tarafından otomatik olarak oluşturulur ve içeriği ön tanımlı olarak aşağıdaki gibidir:

 deneme/urls.py
-----------------------------------------------------------------------------------------------------
from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns( ' ',
    # Examples:
    # url(r'^$', 'deneme.views.home', name='home'),
    # url(r'^deneme/', include('deneme.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)
-----------------------------------------------------------------------------------------------------

Bu dosya hazırlamış olduğumuz görünümleri içerecektir. O halde ikinci satıra

-----------------------------------------------------------------------------------------------------
import views
-----------------------------------------------------------------------------------------------------

daha sonra urlpatterns değişkenine

-----------------------------------------------------------------------------------------------------
url(r'^merhaba/', views.merhaba_dunya),
-----------------------------------------------------------------------------------------------------

satırını ekleyelim. Bu şekilde yapılan adres tanımlamalarına url diyeceğiz. Şimdi urls.py dosyamızı bu haliyle kaydedelim. Artık web sayfamızı görüntüleyebiliriz. Bunun için tarayıcımıza aşağıdaki adresi yazmamız yeterli olacaktır.

-----------------------------------------------------------------------------------------------------
http://localhost:8000/merhaba/
-----------------------------------------------------------------------------------------------------

Tabi bu işlemi yaparken Django web sunucusunu çalıştırdığımızdan emin olmalıyız.
Sonuç olarak ekran görüntümüz aşağıdaki gibi olacaktır:




Siz de kendinize bunun gibi statik örnekler yapabilirsiniz.







Şimdi de dinamik içeriğe sahip bir web sayfasının görünüm'ünü ve ona ait bir url oluşturalım. Örneğin kullanıcıya rastgele bir sayı veren bir web sayfası hazırlayalım. Bunun için daha önce de öğrendiğimiz gibi view.py dosyasının içerisine :

-----------------------------------------------------------------------------------------------------
import random

def  rastgele(request):
       return HttpResponse('<b> Rastgele sayı : <b> %f ' % random.random() )
-----------------------------------------------------------------------------------------------------

ve bu sayfaya ait url'i de urls.py dosyası içerisine (patterns nesnesinin argümanına) aşağıdaki satırı ekleyelim.

-----------------------------------------------------------------------------------------------------
url(r'^rastgele/', views.rastgele),
-----------------------------------------------------------------------------------------------------

Tarayıcımızdan

-----------------------------------------------------------------------------------------------------
http://localhost:8000/rastgele/
-----------------------------------------------------------------------------------------------------

adresini çağırdığımızda ekran görüntümüz şu şekilde olacaktır:


 
Şimdiye kadar web sitemizdeki bir dizin sisteminin nasıl karşılanacağından bahsettik. Peki web tarayıcısından "http://localhost:8000" isteğinde bulunursak ne cevap alırız?
Deneyip baktığımızda Page Not found 404 hatasını alırız. Bu isteği kendi ana sayfamızı oluşturmak için her zaman olduğu gibi görünüme bir işlev yazarak halledeceğiz. url tanımlamasını yapacağız. 

-----------------------------------------------------------------------------------------------------
url(r'^$/', views.anasayfam),
-----------------------------------------------------------------------------------------------------

Görünüme de şu işlevi ekledikten sonra artık "http://localhost:8000" bizim anasayfamız olacaktır.

-----------------------------------------------------------------------------------------------------
def  anasayfam(request):
       return HttpResponse('<h1> Ana Sayfam </h1> ')
-----------------------------------------------------------------------------------------------------




Referanslar :
  1. https://docs.djangoproject.com/en/dev/

18 Kasım 2013 Pazartesi

Django'da Proje Oluşturma

Merhaba Arkadaşlar,

Bu hafta Django kodlarımızı yazabileceğimiz bir düzenleyici seçip proje oluşturmayı öğreneceğiz.
Birçok yazılımcı programalama dili ile gelen ide'leri kullanarak yazılım geliştirir. Örneğin çoğu Django geliştiricisi Python ile birlikte gelen IDLE ile çalışmaktadır. Ancak farklı düzenleyici kullanan sayısı da azımsanmayacak kadar çoktur. Bu yüzden farklı bir düzenleyiciyi de tanıtmak istedim. Bu düzenleyici çoğumuzun da kullandığı Notepad++ olacak. Notepad++'ı indirmek için aşağıdaki adrese gidiniz:

http://notepad-plus-plus.org/download/v6.5.1.html

Programı indirip kurunuz. Türkçe harflerde sorun yaşamamak için menuden Ayarlar > Tercihler 'i seçin. Açılan pencerede Yeni belge / Varsayılan Dizin sekmesini seçip Kodlama kısmında UTF-8 (BOM'suz) seçeneğini ve altında bulunan Açık ANSI dosyalarına uygula kutusunu seçmeniz yeterli olacaktır. Ayrıca Notepad++'ın eklenti ekle gibi güzel bir özelliğini de kullanabilirsiniz. Bunun için Eklentiler > Plugin Manager > Show Plugin Manager deyip ekrana gelen pencereden Python Script ve Python Indent eklentilerini seçip kurduktan sonra eksiksiz bir Django ide'si oluşturmuş olacaksınız.

PROJE OLUŞTURMA

Bu bölümde kısaca proje oluşturmayı ve bu esnada oluşan dosyalar hakkında bilgi vermek istiyorum.
Django projelerini geliştirirken kendi içerisindeki Web sunucusunu kullanmak çok daha uygun olacaktır. Bir Django projesini başlatmak için öncelikle tüm Django projelerine ait dosyaları kaydedeceğimiz bir klasöre ihtiyacımız olacak. Bu klasöre DjangoProjeleri adını verip komut satırından oluşturalım.
                                                                                                                                
C:\ > mkdir DjangoProjeleri
                                                                                                                                

Şimdi de oluşturduğumuz dizine projemizin klasörünü oluşturup başlayalım.

                                                                                                                              
C:\ > cd DjangoProjeleri
C:\DjangoProjeleri > C:\Python27\python.exe C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject deneme 
                                                                                                                             
Bu şekilde deneme klasörü içerisinde projemiz için gerekli dosya ve klasörler oluşturulacaktır.Oluşacak yapı şu şekildedir:

                                                                                                                                
deneme/
             __init__.py
             settings.py
             urls.py
             wsgi.py
 manage.py
                                                                                                                                 

Şimdi dosyaların özelliklerini ve işlevlerini kısa açıklayalım.

  1. deneme : Kısaca proje klasörü diyeceğimiz , içerisinde  __init__.py, settings.py, urls.py ve wsgi.py dosyalarının bulunduğu klasördür.
  2.  __init__.py : Python'un deneme klasörünü paket klasörü olarak algılamasını sağlayacak boş bir dosyadır.
  3. settings.py : Projemiz ile ilgili yapılandırmaların bulunduğu dosyadır.
  4.  wsgi.py : Django geliştirme sunucusu WSGI (Web sunucusu geçit arayüzü) uygulamasını içerir.
  5.  manage.py : Genellikle geliştirme sunucusunu başlatmak için kullanacağımız ve asla üzerinde değişiklik yapmayacağımız dosyadır.

Artık geliştirme sunucumuzla çalışma zamanı geldi. Şimdi sunucuyu aşağıdaki komutla başlatalım.

                                                                                                                              
C:\ DjangoProjeleri> cd deneme
C:\DjangoProjeleri\deneme> C:\Python27\python.exe manage.py runserver
                                                                                                                             

komutu çalıştırdıktan sonra komut satırı ekran görüntüsü şöyle olacaktır.









(CTRL-BREAK ile serverdan çıkamıyorsanız CTRL-FN-INSERT 'ü deneyin.)

Şimdi projemizi web tarayıcısı ile görelim.Bunun için adres çubuğuna
                                                                                         
http://localhost:8000/
                                                                                         
adresini yazalım. Ekran görüntümüz aşağıdaki gibi olacaktır.


Geliştirme sunucusu ön tanımlı olarak yerel ağ arayüzünden 8000 portunu dinler. Siz de istediğiniz bir arayüzün herhangi bir portunu dinletebilirsiniz. Örneğin 192.168.0.25 adresinin (bu adres Djangonun çalıştığı makinede bir ağ arayüzündeki adres olmalıdır) 8025 portunu dinlemek için:

                                                                                                                           
C:\DjangoProjeleri\deneme> C:\Python27\python.exe manage.py runserver 192.168.0.25:8025
                                                                                                                          

Ayrıca tüm arayüzlerin tüm adreslerini dinlemek için IP adresi yerine 0.0.0.0 yazılmalıdır.

Referanslar :
  1. https://docs.djangoproject.com/en/dev/
  2. BAŞER, Mustafa (2013). Django
  3. http://tr.wikipedia.org/wiki/Notepad%2B%2B
  4. http://tr.wikipedia.org/wiki/T%C3%BCmle%C5%9Fik_geli%C5%9Ftirme_ortam%C4%B1
  5. http://notepad-plus-plus.org/download/v6.5.1.html
  6. http://en.wikipedia.org/wiki/IDLE_(Python)


16 Kasım 2013 Cumartesi

Django'ya Giriş ve Kurulumu



Merhaba Arkadaşlar,

Bu hafta Web programcılığı ve Django'nun kurulumu hakkında bilgi vermek istiyorum.

Web programcılığı; web sayfalarının giderek yaygınlaşması ve kullanıcı ile etkileşmeye ihtiyacının olması nedeniyle CGI (Common gateway Interface) ile başladığını söyleyebiliriz.


Tarayıcı, sunucu, CGI ve veritabanı etkileşimi
CGI yöntemi ile etkileşimli web sayfaları üretmek oldukça pahalıdır.Çünkü sunucuya CGI programının yapacağı her istek programı çalıştırır. Programlar dış derlemeli bir dil ile yazılabildiği gibi yorumlamalı diller ile de yazılabilir. Örneğin Python yorumlamalı bir dildir. Python ile yazılmış bir program şöyle çalışır: Önce Python çalışır, daha sonra yazınlan CGI okunur, veritabanı bağlantısı kurulur ve iş bittiğinde süreç sonlanır.Bu süreç hem yavaş hem de sunucu üzerinde büyük bir iş yükü oluşturur. Ayrıca performansın düşük olduğu bir işlemdir. Ama web sunucusuyla bütünleştirilmiş bir yorumlayıcının performansı oldukça yüksektir. Örneğin PHP böyle çalışır. Ayrıca Django da mod_python veya mod_wsgi kullandığından performans yüksektir.

DJANGO'NUN KURULUMU
Arkadaşlar bu bölümde Django'yu kurmayı anlatacağım. Oldukça kolay bir işlem olacaktır.

Windows'a Kurulum
Django'ya ön hazırlık bölümünde sistemimize kurduğumuz Pyhthon'un üzerine Django'yu kuracağız.
Ben kendim windows kullandığım için sizlere de windows'a kurulumunu anlatacağım.

Öncelikle  https://www.djangoproject.com/download/ adresinden Django-1.4.1.tar.gz dosyasını indirelim. İndirilen dosyayı herhangi bir arşivleme programı ile "C:\Django-1.4.1" konumuna çıkaralım. Komut satırını açıp dosya konumunu "C:\Django-1.4.1" konumuna getirelim.

Ardından "C:\Python27\python.exe setup.py install" komutuyla Djangoyu kuralım.
                                                                                                            
Şimdi de kurduğumuz Django web çatısının sürümünü öğrenelim. 
Komut satırını açıp python.exe dosyasını çalıştırıp gelen ekrana 

      import django ve
   django.get_version()

komutlarını yazalım.

Eğer siz de bu sonucu aldıysanız, kurumunuzun başarı ile tamamladığınızı söyleyebiliriz.


Ayrıca kurulum işlemleri sonucunda "C:\Python27\Lib\site-packages" klasörü altında "django" klasörü ,


"C:\Python27\Scripts" klasörü altında ise "django-admin.py" dosyasının oluşturulduğunu görebilirseniz.