django ile ağrısız teşhis ve tedavi
TRANSCRIPT
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
GİRİŞ
http://github.com/muhuk/urlshortenersareevil
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
GİRİŞ
http://www.youtube.com/watch?v=PLUS00QrYWw
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
"Bize bir web sitesi lazım."
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
"Bize bir web sitesi lazım."• HTTP
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
"Bize bir web sitesi lazım."• HTTP
• Metin işleme
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
"Bize bir web sitesi lazım."• HTTP
• Metin işleme
- Çerezler
- Oturumlar
- Veritabanları
• Durumsuz bağlantı & kalıcılık
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 0: Ev Yapımı
http://commons.wikimedia.org/wiki/File:Alphabet_soup.jpg
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 0: Ev Yapımı• Sayfa paradigması: tüm bileşenler bir arada
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çö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.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çö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.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 1: Çerçeveler
http://commons.wikimedia.org/wiki/File:Formal_01.jpg
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 1: Çerçeveler• Organizasyon ihtiyacını karşılar.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 1: Çerçeveler• Organizasyon ihtiyacını karşılar.
• Basit projeleri gerçekleştirmek biraz daha zor.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çö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.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çö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.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 2: Anahtar Teslim
http://www.flickr.com/photos/heathbar/2389033978/
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çözüm 2: Anahtar Teslim
• En az çabayla, en kısa zamanda, en gelişmiş çözüm.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
KAMERA ARKASI
Çö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.
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
DJANGO YERLEŞİM PLANI
URLTANIMLARI
VIEW
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
DJANGO YERLEŞİM PLANI
URLTANIMLARI
VIEW
ORM ÖNBELLEK OTURUM
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
DJANGO YERLEŞİM PLANI
ŞABLON API
YÜKLEYİCİKOMUT
&FİLTRELER
URLTANIMLARI
VIEW
ORM ÖNBELLEK OTURUM
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
DJANGO YERLEŞİM PLANI
ŞABLON API
YÜKLEYİCİKOMUT
&FİLTRELER
URLTANIMLARI
VIEW
ORM ÖNBELLEK OTURUM
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Şablonlar Hakkında
• Düz metin dosyaları
• {{ değişken }}
• {% komut parametre %}
• {{ değişken|filtre }} {% komut parametre|filtre %}
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Şablonların İşlenmesi
KOMUT&
FİLTRELER
CONTEXT
Ekleme: {% include %}
Kalıtım: {% extends %} Yükleme: {% load %}
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Tema Oluşturma
base.htmlTemel HTML yapısı
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Tema Oluşturma
base.htmlTemel HTML yapısı
myproject/base.htmlTema
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Tema Oluşturma
base.htmlTemel HTML yapısı
myproject/base.htmlTema
myproject/homepage.html
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Bloklar{% block header %} {% block title %}urlshortenersareevil{% endblock %} <img src="/media/img/menu.png" alt="menu" />{% endblock header %}
{% block content %}{% endblock content %}
{% block title %}Homepage |{{ block.super }}{% endblock %}
{% block content %} <h1>Homepage</h1> <p>Lorem ipsum...</p>{% endblock content %}
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Döngüler & Ekleme
{% for post in posts %} {% include "blog/_post.html" %}{% endfor %}
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
ŞABLON ALTSİSTEMİ
Şablon Editörleri için Dökümantasyon
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YÜKSEK UYARLANABİLİRLİK
Teorem
akılcı varsayılan değerler
çok entegrasyon noktası
düşük maliyetli değişiklikler
+
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YÜKSEK UYARLANABİLİRLİK
Ö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'),)
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YÜKSEK UYARLANABİLİRLİK
Ö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'),)
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YÜKSEK UYARLANABİLİRLİK
Örnek:from django.conf.urls.defaults import *from models import Postfrom 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'),)
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YÜKSEK UYARLANABİLİRLİK
Ö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'),)
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
Django & UNIX
django_apps = unix_philosophy(python, web_programming)
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
Django Yerleşim Planı II
PROJEYE MAHSUS B.
AYA
RLA
R3. PARTİ BİLEŞENLER
CONTRIB BİLEŞENLERİ
DJANGO
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
Bileşen (App) Nedir?
• Python pakedi
• Django'ya özel yapı
- üzerinde bir dizin içindeos.path
- modülü__init__.py
- models.py
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
İçerik
• Modeller
• Görünümler (view)
• URL tanımları
• Varsayılan şablonlar
• Şablon komut ve filtreleri
• Testler
• Sinyaller
• entegrasyonuadmin
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
Kapsam
"Bir şey yap ve onu iyi yap."Doug McIlroy
App
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
YENİDEN KULLANILABİLİR BİLEŞENLER
Kapsam
Atamert Ölçgen
müşterek çalışma & esneklik
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
SONUÇ
Django Evreni
• www.djangoproject.com
• irc://irc.freenode.net/django
• http://stackoverflow.com/questions/tagged/django
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
SONUÇ
Yapılacaklar:
• Django indirilecek, kurulup kurcalanacak
• App'ler geliştirilecek, özgürleştirilecek
• Katkıda bulunulacak
Nisan 2010
Atamert Ölçgen http://www.muhuk.com
Teşekkür ederim.