5. KAMERA ARKASI Nisan 2010
"Bize bir web sitesi lazım."
Atamert Ölçgen http://www.muhuk.com
6. KAMERA ARKASI Nisan 2010
"Bize bir web sitesi lazım."
• HTTP
Atamert Ölçgen http://www.muhuk.com
7. KAMERA ARKASI Nisan 2010
"Bize bir web sitesi lazım."
• HTTP
• Metin işleme
Atamert Ölçgen http://www.muhuk.com
8. KAMERA ARKASI Nisan 2010
"Bize bir web sitesi lazım."
• HTTP
• Metin işleme
• Durumsuz bağlantı & kalıcılık
- Çerezler
- Oturumlar
- Veritabanları
Atamert Ölçgen http://www.muhuk.com
9. KAMERA ARKASI Nisan 2010
Çözüm 0: Ev Yapımı
http://commons.wikimedia.org/wiki/File:Alphabet_soup.jpg
Atamert Ölçgen http://www.muhuk.com
10. KAMERA ARKASI Nisan 2010
Çözüm 0: Ev Yapımı
• Sayfa paradigması: tüm bileşenler bir arada
Atamert Ölçgen http://www.muhuk.com
11. KAMERA ARKASI Nisan 2010
Çözüm 0: Ev Yapımı
• Sayfa paradigması: tüm bileşenler bir arada
• Basit projeleri gerçekleştirmek çok kolay.
• Karmaşıklık arttıkça değişikliklerin maliyeti
katlanarak artıyor.
Atamert Ölçgen http://www.muhuk.com
12. KAMERA ARKASI Nisan 2010
Çözüm 0: Ev Yapımı
• Sayfa paradigması: tüm bileşenler bir arada
• Basit projeleri gerçekleştirmek çok kolay.
• Karmaşıklık arttıkça değişikliklerin maliyeti
katlanarak artıyor.
• Zamanla eldeki projeye mahsus bir çerçeve
haline gelir.
Atamert Ölçgen http://www.muhuk.com
15. KAMERA ARKASI Nisan 2010
Çözüm 1: Çerçeveler
• Organizasyon ihtiyacını karşılar.
• Basit projeleri gerçekleştirmek biraz daha zor.
Atamert Ölçgen http://www.muhuk.com
16. KAMERA ARKASI Nisan 2010
Çözüm 1: Çerçeveler
• Organizasyon ihtiyacını karşılar.
• Basit projeleri gerçekleştirmek biraz daha zor.
• İyi tasarlanmış bir çerçeve, artan karmaşıklık ile
değişiklik maliyetleri arasındaki dengeyi korur.
Atamert Ölçgen http://www.muhuk.com
17. KAMERA ARKASI Nisan 2010
Çözüm 1: Çerçeveler
• Organizasyon ihtiyacını karşılar.
• Basit projeleri gerçekleştirmek biraz daha zor.
• İyi tasarlanmış bir çerçeve, artan karmaşıklık ile
değişiklik maliyetleri arasındaki dengeyi korur.
• Herkesin aynı yapıyı kullanmasıyla:
- Bilgi birikimi.
- Denenmiş, gözden geçirilmiş kaynak kodlar.
- Yüksek uyarlanabilirlik.
Atamert Ölçgen http://www.muhuk.com
18. KAMERA ARKASI Nisan 2010
Çözüm 2: Anahtar Teslim
http://www.flickr.com/photos/heathbar/2389033978/
Atamert Ölçgen http://www.muhuk.com
19. KAMERA ARKASI Nisan 2010
Çözüm 2: Anahtar Teslim
• En az çabayla,
en kısa zamanda,
en gelişmiş çözüm.
Atamert Ölçgen http://www.muhuk.com
20. KAMERA ARKASI Nisan 2010
Çözüm 2: Anahtar Teslim
• En az çabayla,
en kısa zamanda,
en gelişmiş çözüm.
• Sunulan seçenekler dışında
geliştirmek ve değiştirmek zor.
Atamert Ölçgen http://www.muhuk.com
29. ŞABLON ALTSİSTEMİ Nisan 2010
Tema Oluşturma
Temel HTML yapısı
base.html
Atamert Ölçgen http://www.muhuk.com
30. ŞABLON ALTSİSTEMİ Nisan 2010
Tema Oluşturma
Temel HTML yapısı
base.html
Tema
myproject/base.html
Atamert Ölçgen http://www.muhuk.com
31. ŞABLON ALTSİSTEMİ Nisan 2010
Tema Oluşturma
Temel HTML yapısı
base.html
Tema
myproject/base.html
myproject/homepage.html
Atamert Ölçgen http://www.muhuk.com
33. ŞABLON ALTSİSTEMİ Nisan 2010
Döngüler & Ekleme
{% for post in posts %}
{% include "blog/_post.html" %}
{% endfor %}
Atamert Ölçgen http://www.muhuk.com
34. ŞABLON ALTSİSTEMİ Nisan 2010
Şablon Editörleri için Dökümantasyon
Atamert Ölçgen http://www.muhuk.com
36. YÜKSEK UYARLANABİLİRLİK Nisan 2010
Teorem
akılcı varsayılan değerler
çok entegrasyon noktası
+
düşük maliyetli değişiklikler
Atamert Ölçgen http://www.muhuk.com
37. YÜKSEK UYARLANABİLİRLİK Nisan 2010
Örnek:
from django.conf.urls.defaults import *
from models import Post
urlpatterns = patterns('',
('^$',
'django.views.generic.list_detail.object_list',
{'queryset': Post.objects.all()},
'post_list'),
('^(?P<object_id>d+)/$',
'django.views.generic.list_detail.object_detail',
{'queryset': Post.objects.all()},
'post_detail'),
('^create/$',
'django.views.generic.create_update.create_object',
{'model': Post},
'post_create'),
('^(?P<object_id>d+)/edit/$',
'django.views.generic.create_update.update_object',
{'model': Post},
'post_edit'),
)
Atamert Ölçgen http://www.muhuk.com
38. YÜKSEK UYARLANABİLİRLİK Nisan 2010
Örnek:
from django.conf.urls.defaults import *
from models import Post
urlpatterns = patterns('django.views.generic',
('^$',
'list_detail.object_list',
{'queryset': Post.objects.all()},
'post_list'),
('^(?P<object_id>d+)/$',
'list_detail.object_detail',
{'queryset': Post.objects.all()},
'post_detail'),
('^create/$',
'create_update.create_object',
{'model': Post},
'post_create'),
('^(?P<object_id>d+)/edit/$',
'create_update.update_object',
{'model': Post},
'post_edit'),
)
Atamert Ölçgen http://www.muhuk.com
39. YÜKSEK UYARLANABİLİRLİK Nisan 2010
Örnek:
from django.conf.urls.defaults import *
from models import Post
from views import post_create, post_edit
urlpatterns = patterns('django.views.generic',
('^$',
'list_detail.object_list',
{'queryset': Post.objects.all()},
'post_list'),
('^(?P<object_id>d+)/$',
'list_detail.object_detail',
{'queryset': Post.objects.all()},
'post_detail'),
('^create/$',
post_create,
{},
'post_create'),
('^(?P<object_id>d+)/edit/$',
post_edit,
{},
'post_edit'),
)
Atamert Ölçgen http://www.muhuk.com
40. YÜKSEK UYARLANABİLİRLİK Nisan 2010
Örnek:
from django.conf.urls.defaults import *
from models import Post
urlpatterns = patterns('django.views.generic',
('^$',
'list_detail.object_list',
{'queryset': Post.objects.all()},
'post_list'),
('^(?P<object_id>d+)/$',
'list_detail.object_detail',
{'queryset': Post.objects.all()},
'post_detail'),
)
urlpatterns += patterns('blog.views'
('^create/$',
'post_create',
{},
'post_create'),
('^(?P<object_id>d+)/edit/$',
'post_edit',
{},
'post_edit'),
)
Atamert Ölçgen http://www.muhuk.com
43. YENİDEN KULLANILABİLİR BİLEŞENLER Nisan 2010
Django Yerleşim Planı II
PROJEYE MAHSUS B.
AYARLAR
3. PARTİ BİLEŞENLER
CONTRIB BİLEŞENLERİ
DJANGO
Atamert Ölçgen http://www.muhuk.com
44. YENİDEN KULLANILABİLİR BİLEŞENLER Nisan 2010
Bileşen (App) Nedir?
• Python pakedi
- os.path üzerinde bir dizin içinde
- __init__.py modülü
• Django'ya özel yapı
- models.py
Atamert Ölçgen http://www.muhuk.com