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
