Selam,

Bence Django en büyük gücünü dökümantasyonundan alıyor. Bir
programcının web uygulaması geliştirirken nerelere önem vereceği,
nelerde takılıp sorunlar yaşayacağını framework'ü yazan arkadaşlar çok
iyi bildikleri için dökümantasyonu da ona göre hazırlamışlar.
Kolaylık/Zorluk programcıdan programcıya değişen bir ruh hali olduğu
için framework karşılaştırmada bir argüman olarak kullanılmamasını
doğru bulmuyorum.

Öte yandan Django dökümantasyonu "Şunu yapman için şöyle yapmalısın"
demesinin yanında "Ama bir de şöyle bir yol var istersen böyle de
yapabilirsin"i de gösteriyor ki ben diğer hiç bir python framework'ü
dökümanında böyle birşey görmedim.

Basit bir örnek: Django'nun cache sistemi için yazdığı dökümantasyonda
http://docs.djangoproject.com/en/dev/topics/cache/ cache'in template
içinde, controller ve veritabanı katmanında nasıl kullanılacağı ve
diğer opsiyonlar detaylı biçimde anlatılırken turbogears cache
dökümantasyonunda http://docs.turbogears.org/2.0/Caching "işte cache
böyledir. Bir örnek ile budur, isterseniz pylons dökümanına gidin
oradan bakın" diyor.

Kısaca dökümantasyon hayati birşey ve django bunu çok iyi kotarıyor.

ORM
-------
Django'nun ORM katmanı sqlalchemyden faydalanmıyor ve Django'nun
ORM'si kötü. Evet django'nun ORM'si kötü.. fakat kolay/zor olduğundan
ya da müdahele edilemiyor olduğundan değil. Kötü çünkü ORM katmanının
işleri senin yerine yapmasına aldanarak dikkat etmeden yazdığın bir
kod parçası veritabanının anasını ağlatabiliyor. Çünkü Django'nun;
yazdığın object oriented bir python kodunu ORM vasıtasıyla raw bir sql
query'sine çevirirken ki yaptığı optimizasyon felaket. Optimizasyon
filan yapmıyor zaten. ORM'sini kullanırken çok dikkatli olmak gerek.
Bunun yanında direk olarak ORM kullanmadan raw sql yazabilmek de
Django'da çok kolay. ORM kullanmak zorunda değilsin. Artık ORM'si
karışık INNER JOIN'leri, ilginç AND'li OR'lu LIKE'li filtrelemeleri
güzel bir şekilde yapabiliyor. çok nadir elinle sql yazmak zorunda
kalıyorsun.

URL mapping
-----------------
Varolan bütün python framework'lerini kullanan biri olarak
söyleybilirim ki URL mapping'i en kolay framework Django. Kolayı neye
göre söylüyorum: python regex kütüphanesine (ki adı da 're' olur) en
uyumlu url mapping sistemini yazmış adamlar. Örnek veriyim hemen.
Mesela Pylons'da url mapping syntaxı şöyledir:

map.connect(':controller/:action/:id')

Şimdi bu ne demek diyebilirsiniz ben ilk kez görünce ne bu dedim
çünkü. Fakat python ile regular expression yazmış biri (yani 're'
kütüphanesini kullanmış biri), bir Django url entry'si görse;

(r"^/register/(?P<invitation_key>\w+)/$")

şaşırmazdı çünkü tamamen python regex kütüphanesiyle uyumlu. Bu yüzden
yazdığın şeyi anında test edebiliyorsun. Açıyorsun python shell'i:

In [1]: import re
In [2]: 
re.compile(r"^/register/(?P<invitation_key>\w+)/$").match("/register/abc123/").groupdict()
Out[2]: {'invitation_key': 'abc123'}


Template
-----------
Django'nun template sistemi çok esnek ve kolay çünkü dilediğin zaman
kendi yazdığın template tag'leri template içinde kullanabiliyorsun.
Template içinde karışık bir sql querysi yazmaya çalışmadıkça django
sizin istediğinizi yapacaktır. (Zaten öyle birşey yapıyorsanız sorun
sizdedir.)

Bu arada yukarıdaki mesaja binaen, kullanıcıya XML yada JSON olan bir
içerik göndermek framework'den bağımsız tamamen HTTP mimetype kavramı
ile ilgili.
Sen elinle yazdığın bir xml'i "<selam>özgür</selam>" yada simplejson
kullanarak oluşturduğun "{json: bu bir json}" dictionary'sini
kullanıcıya yollarken HTTP mimetype'ini ayarlamazsan
yazdığın şey her durumda browser tarafından text/html olarak yorumlanacaktır.

Şahsi kaanatim; temiz, anlaşılır, oop paradigmalarına tamamen uyumlu
kod yazabilmek için Django birinci tercih yönünde.

Bol şans.

2010/4/11 Alper KANAT <[email protected]>:
> Merhaba Timuçin,
>
> Alternatifleri bilmek güzel şey. Bence TurboGears ile devam et. Hatta
> mümkünse konuyla ilgili günlük yazıları vs. yaz bir yerlere.. Böylece
> tecrübelerinden faydalanma imkanımız olur. Belki de görüntülü ve adım adım
> giden bir şeyler yaparsan Türkçe içeriğe de güzel bir katkın olur. Şu aralar
> herkes django'cu, Python'cu olduğundan alternatifleri öğrenmek zenginlik
> açısından güzel olur bence..
>
> Bildiğim kadarıyla django da arka tarafta sqlalchemy'nin özelliklerinden
> faydalanıyordu ama bu yalnızca bir duyum. Doğruluğundan emin değilim. ORM'i
> nasıl hallediyor pek bakmadım dürüst olmak gerekirse..
>
> django'da xml ve json döndürmek kolay bu arada.. TurboGears ne gibi bir
> yenilik getiriyor bilemedim ama herhangi bir django nesnesini JSON haline
> getirmek çok kolay. XML için de genellikle serileştirme kullanılıyor ki bu
> da çok zor değil.
>
> ---
> Quis custodiet ipsos custodes?
>
>
> 11 Nisan 2010 13:47 tarihinde Timuçin Kızılay <[email protected]>
> yazdı:
>>
>> Bu mail listelerinden gördüğüm çoğunluk python web framework olarak
>> django kullanıyor. Daha önce bir web sitesi işinde django kullanmıştım,
>> bu sefer Turbogears naıslmış bir bakayım dedim ve web üzerinden
>> çalışacak, temelde stok kontrol uygulaması benzeri bir uygulamayı
>> turbogears kullanarak yapmaya başladım.
>> Gördüğüm kadarıyla bazı konularda Turbogears daha iyi.
>> Template sistemi olarak genshi kullanılıyor, django'ya göre daha rahat
>> geldi.
>> Database ORM olarak da sqlalchemy kütüphanesi django ile gelen
>> kütüphaneye göre daha rahat kullanımlı.
>> Controller yazmak da daha rahat geldi. Django url yapısı regex ile
>> rahatça düzenlenebiliyor ama turbogears içinde controller class içinde
>> fonksiyon tanımlamak ve gerektiğinde json ya da xml döndürmek çok daha
>> rahat geldi.
>>
>> Şimdi aklıma takılan şey, bir çok kişi django kullanıyor, benim
>> bilmediğim neler var da django daha çok tercih ediliyor? Turbogears ile
>> uğraşmak yerine django ile mi devam etsem?
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> [email protected]
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>



-- 
Özgür Vatansever
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap