Dökümantasyon niteliğindeki bu blog daha fazla devam etmemektedir.

Django kitabına http://www.djangobook.com/ linkinden ulaşılabilir.

Çevirileri devam ettirmek isteyenler, http://0nur.net/ adresinden bana ulaşabilirler.

16 Ağustos 2009 Pazar

MVC Tasarım Şablonu

Bir önceki başlıkta ki örnekte verdiğimiz yaklaşımı bir de Web çatısı yaklaşımından vererek farkı gözlemlemizi sağlayan örneğe hızlıca dalış yapalım. CGI kodlarıyla yaptığınız örneği Django ile aşağıdaki gibi yazabilirsiniz. Burada dikkat edeceğiniz ilk unsur programımızı dört Python dosyasına (modeller.py, gorunenler.py, urller.py) ve bir HTML şablonuna (son_kitaplar.html) parçaladık:

# modeller.py (veritabanı tabloları)

from django.db import models

class Kitap(models.Model):
   ad = models.CharField(max_length=50)
   yayim_tarihi = models.DateField()


# gorunusler.py (işin mantığı)

from django.shortcuts import render_to_response
from modeller import Kitap

def son_kitaplar(request):
   kitap_listesi = Kitap.objects.order_by('-pub_date')[:10]
   return render_to_response('son_kitaplar.html', {'kitap_listesi': kitap_listesi})


# urller.py (URL ayarları)

from django.conf.urls.defaults import *
import gorunusler

urlpatterns = patterns('',
   (r'^yeniler/$', gorunusler.son_litaplar),
)


# son_kitaplar.html (şablonumuz)

<html><head><title>Kitaplar</title></head>
<body>
<h1>Kitaplar</h1>
<ul>
{% for kitap in kitap_listesi %}
<li>{{ kitap.ad }}</li>
{% endfor %}
</ul>
</body></html>

Tekrar hatırlatmak gerekirse, programın sözdizimi hakkında merak etmeyin, sadece genel hatlarıyla inceleyin. Burada sizi ilgilendiren kısım, yazılım parçalarıdır:

  • modeller.py dosyası veritabanı tablolarını bir Python sınıfı olarak barındırmaktadır. Bu sınıfa bir model denmektedir. Bu modeli kullanarak, SQL sorguları yerine kolayca ve tamamen Python kodları ile; veritabanınızda yeni kayıt yaratabilir, kayıdı alabilir, güncelleyebilir ve silebilirsiniz.
  • gorunusler.py dosyasi sayfanın mantığını içeren dosyasdır. son_kitaplar() fonksiyona görünen (view) denmektedir.
  • urller.py dosyası URL desenlerine göre hangi görülecek (view) fonksiyonun çağrılacağını barındıran dosyadır. Bu örnekte, /yeniler/ URL'si son_kitaplar() fonksiyonunu çağıracaktır. Diğer bir deyişle: http://example.com/yeniler/ URL'sini açmaya çalışan biri, son_kitaplar() fonksiyonunu çalıştıracaktır (ve fonksiyonun oluşturduğu içeriği görecektir).
  • son_kitaplar.html dosyası sayfanın tasarımını tanımlayan HTML şablonudur. İçerisinde temel mantıksal deyimlerin çalıştırıldığı (örneğin: {% for kitap in kitap_listesi %} gibi) bir şablon dili kullanmaktadır.

Hepsi birlikte Model-View-Controller (MVC [Model-Görünen-Denetleyici]) isimli bir şablonun parçalarını oluşturur. Kolayca anlatmak gerekirse, MVC: arabirimlere ayrılmış (görünen [view]), kullanıcı istemine göre yönlendirilmiş (denetleyici [controller]) kodların, veriyi (modeli) kullanarak çalışmasını sağlayan yazılım geliştirme metoduna denmektedir. (MVC'i 5. Bölümde derinlemesine tartışacağız.)

Bu yaklaşımın ana özelliği bileşenlerin gevşek birleştirildiğidir. Django ile yapılmış Web uygulamalarının her bir parçasının ana bir amacı vardır ve bir parça diğerini etkilemeden çabucak değiştirilebilir. Örnek vermek gerekirse, geliştirici URL yapısında ki bir bölümü, uygulamının hiç bir şekilde iç yapısını bozmayacak şekilde kolayca değiştirebilir. Bir tasarımcı, Python koduna dokunmasına gerek kalmadan sayfanın HTML tasarımını değiştirebilir. Bir veritabanı yöneticisinin, veritabanı tablolarındaki adları değiştirmek istediğinde, yüzlerce dosyada değiştirmek yerine, sadece bir bölümde değiştirmesi yeterlidir.

Bu kitapta (sitede), MVC'nin her bir bileşeninin kendi bölümü bulunmaktadır: 3. Bölüm görünenleri, 4. Bölüm şablonları ve 5. Bölüm modellleri anlatmaktadır.

Hiç yorum yok:

Yorum Gönder