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/

Hiç yorum yok:

Yorum Gönder