23 Eylül 2008 Salı

Django için paçaları sıvadım

Bende sonunda eğlenceyi doruklarda yaşamak için Django ile "Selam cümlet-ül alemin" (Hello world) dedim. Linus'un Linux 1.0 duyurusunu yaptığı sıralarda (tabii 2 yıl öncesine kadar bundan haberim yoktu) ben bir Apple makinasındaki GWBasic ile "hello world" yazmanın heyecanını yaşayan bir gençtim. O gün bu gündür ne zaman yeni bir "hello world" yapsam hep aynı heyecanı duyuyorum. Bu arada "hello world yapmak" diye bir deyimi ilk kullanan kişiyim herhalde.

Her neyse, bu yazı öyle geyik bir yazı olmasın bir işe yarasın, diye neler yaptığımı anlatayım.

Django 1.0'ı Pardus'da kurmak için "sudo pisi it Django" komutu veya Paket Yöneticisinden tıklamanız yeterli.

Daha sonra projeler için bir klasör açmanız iyi olur, ben ev dizininde django adında bir klasör açtım, konqueror ile bu dizine girip F4 tuşuna basarak konsolu açın ve ilk projenizi aşağıdaki komut ile oluşturun.

django-admin.py startproject deneme

Django bu komutla deneme adında bir dizin oluşturacak ve proje için gerekli temel dosyaları buraya yazacaktır. Proje henüz boş ancak çalışıp çalışmadığını aşağıdaki komutla hemen test edebilirsiniz.

python manage.py runserver

Bu komutu deneme dizininde vermelisiniz, çünkü manage.py orada. Komut çıktısından anlayacağınız gibi tarayıcınızın http://127.0.0.1:8000 adresinden projenizi görüntüleyebilirsiniz. Kocaman bir "It worked" yazısı görmüş olmalısınız. Evet şimdi kendi kodlarımızı yazalım;

deneme Dizini altında "dersler.py" adında bir dosya oluşturun, içeriği şöyle;


# -*- coding: utf-8 -*-
#Üst satır Türkçe karakterler için

#Django kütüphanesinden bir işlev ekliyoruz
from django.http import HttpResponse


#Bu fonksiyon sitemizin indeks sayfasını oluşturacak
def dersindex(request):
html = "<a href='bolum1'>Bölüm 1</a><br>"
html += "<a href='bolum2'>Bölüm 2</a><br>"
return HttpResponse(html)


#Bu fonksiyon da başka bir sayfa
def ders1(request):
msg = "Django mu? o da ne?"
return HttpResponse(msg)



#Bir başkası
def ders2(request):
msg = "Django Reinhardt ünlü bir gitaristtir."
return HttpResponse(msg)


Bu üç fonksiyonun ortak özelliklerine dikkat edin, parametre olarak "request" alıyorlar ve HttpResponse ile değer döndürüyorlar. Buradaki her bir forksiyonun yaptığı sadece sayfanın içeriğni oluşturmak. dersindex Fonksiyonunudaki HTML kodlarına bakarsanız /bolum1 ve /bolum2 dizinlerine bağlantı verildiğini görüyorsunuz, ancak projemizde böyle bir dizin açmadık, şimdi anladığınız üzere ders1 ve ders2 diye iki fonksiyonumuz var ve bu url adreslerini bu fonksiyonlara bağlamamız gerekiyor. Bunu da Django'nun oluşturduğu urls.py dosyasından yapıyoruz. Bu dosyayı şöyle düzenledim;


# -*- coding: utf-8 -*-
#Bunu ben ekledim

from django.conf.urls.defaults import *

#Bunu da ben ekledim, yazdığımız fonksiyonları projeye ekliyoruz
from deneme.dersler import dersindex, ders1, ders2

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


urlpatterns = patterns( '',
('^$', dersindex),
('bolum1', ders1),
('bolum2', ders2),
)


Böylece patterns fonksiyonundaki parametreler ile sitemizin /bolum1 adresi çağırıldığında ders1 forksiyonunun çalışmasını sağlamış oluyoruz. Bu url adreslerinde '^$' gibi düzenli ifadeler kullanılabiliyor, bunula ilgili http://pythontr.blogspot.com/2008/09/dzenli-ifadelelerde-kullanlan.html adresinden bilgi alabilirsiniz.

Merak etmeyin Django ile veritabanı kullanmak en az bu örnek kadar basit :) Bir sonraki örnekte ona bakarız.

2 yorum:

  1. Blogda kodlardaki Python girintileri kaybolmuş, onu dikkate alın...

    YanıtlaSil
  2. http://www.onlinetools.org/tools/htmlizerdata/

    buradan kodları düzgün gözükecek şekilde htmlize edebiliyoruz .)

    YanıtlaSil