DENEYİMLİ PROGRAMCILAR İÇİN DJANGO'YA GİRİŞ. Serdar Dalgıç Yazılım Geliştirme Uzmanı Markafoni 23 Kasım 2013 Yeditepe Üniversitesi



Benzer belgeler
Kullanıldığı Başlıca Siteler

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

Django Web Çerçevesi. Mete Alpaslan KATIRCIOĞLU, Emre YÜCE

EGE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Öğr. Gör. Serkan AKSU 1

ile Python gibi kod yazma

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

PYTHON PROGRAMLAMA DİLİ

Zope Uygulama Sunucusu

Android Ders Notları

The RestructuredText Book Documentation

MOBİL UYGULAMA GELİŞTİRME

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

PYTHON PROGRAMLAMA DİLİ

BİL-142 Bilgisayar Programlama II

Yazılım Kodlama ve İ simlendirme Standartları v1.0

HSancak Nesne Tabanlı Programlama I Ders Notları

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Kaya Oğuz.

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Lambda, Map, Filter ve Dizi Tamamlama

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

One ASP.NET. 5 bileşen barındırmaktadır. Web Forms Model View Controller (MVC) Web Pages Web API SignalR

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

LDAP VE WORDPRESS İLE

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ?

KURULUM KILAVUZU MART Visilabs Target Kurulum Kılavuzu

NicProxy Registrar AWBS Modül Kurulumu Versiyon 1.0

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Mantıksal Kontrol ve Döngü Komutları

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

4. Bağlantı (Köprü) Oluşturma

YAZILIM VE PROGRAMLAMA DİLİ. Donanım ve yazılım nedir? Yazılım nedir? Yazılım çeşitleri nelerdir? Programlama dili nedir

JavaScript & DOM XML & JSON

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Yukarıdaki kod aksi belirtilmediği sürece sürekli çalışır. Yani ekrana sürekli Bilgisayar çıldırdı! yazısı gelir. Ancak;

PROGRAMLAMAYA GİRİŞ DERS 2

Exchange Server 2010 Sertifika Oluşturma

Al Ruby'i Vur Python'a

Java String İşlemleri

Arayüz ve API kodunuzu Spyne ile Birleştirin

çindekiler 3 Python Programlarn Yürütme Kaynak Program... 24

Open Source Coding: Python

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

«BM364» Veritabanı Uygulamaları

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Mantıksal İşlemler. 7.1 true, false, nil

Hafta 12 Karakter Tutan Diziler

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

C#(Sharp) Programlama Dili

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

Python Programlama Dili

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Python Programlama Dili

SolidWorks Macro, SolidWorks API. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

C++ Dersi: Nesne Tabanlı Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1 JAVASCRIPT NEDİR? 1

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

#ifndef COMPLEX_H #define COMPLEX_H

KISIM I: TEMEL KONULAR 1

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

ÖZGÜR YAZILIMLAR İLE J2EE

Giriş. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Lyx Nedir? Belge Hazırlama Bir Örnek Ekler L Y X. Esin Çavlan. 5 Mart 2012

Virtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek

R ile Programlamaya Giriş ve Uygulamalar

1 Aralık 2011 / Perşembe

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

2. SCADA PROGRAMI. TEOS' un size sunduğu bir çok hizmet içerisinde en önemlilerini şöyle sıralayabiliriz:

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Lambda İfadeleri (Lambda Expressions)

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

Bölüm 10: PHP ile Veritabanı Uygulamaları

Görsel Programlama 1

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

JBoss Seam. Melih Sakarya

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Transkript:

DENEYİMLİ PROGRAMCILAR İÇİN DJANGO'YA GİRİŞ Serdar Dalgıç Yazılım Geliştirme Uzmanı Markafoni 23 Kasım 2013 Yeditepe Üniversitesi

Ben Kimim? Markafoni'de Yazılım Geliştirme Uzmanı olarak çalışıyorum. ODTÜ Bilgisayar Mühendisliği Lisans, Boğaziçi Üniversitesi Yazılım Mühendisliği Yüksek Lisans mezunuyum. TÜBİTAK bünyesinde Pardus Projesi'nde çalıştım. (Python'la tanışmam) Web Geliştirme ile tanışmam yakın bir döneme denk geliyor. 1 sene oldu :) Github: github.com/serdardalgic Web sitesi: serdardalgic.org Twitter: twitter.com/serdaroncode Python-Istanbul grubuna üyeyim. Freenode'da #pyistanbul IRC kanalı Uzun zamandır LKD üyesiyim.

Neler Anlatacağım? - 1 Neden Django? Nerelerde Kullanılıyor? Python Python'un özellikleri (özetin özeti) Django Django Kurulumu Django'da işler nasıl yürüyor? Projeler ve Paketler Proje ayar dosyaları: settings.py, manage.py Paketlerdeki dosyalar: models.py, views.py, forms.py MTV is our MVC

Neler Anlatacağım? - 2 Django (devam) Django uygulama dosyaları: urls.py, views.py, models.py İşinize yarayacak Django uygulamaları Öneriler django-extensions, south, ipython, ipdb, v.s..

Python? For perfectionists with deadlines - Teslim tarihleri olan mükemmeliyetçiler için Ne demek? Buraya Django Unchained esprisi gelecek. İsim babası müzisyen Django Reinhardt bu arada..

Django ile ilgili (neredeyse) herşey: https://www.djangoproject.com/

Neden Django? - 1 Hızlı ve temiz bir geliştirme modeli sunması, pragmatik yapısı DRY (Kendini Tekrar Etme!) Prensibi Pluggable (Tak Çıkar) Uygulamalar Geliştirme ve Test için hafif, tek başına çalışan sunucu Teste yatkınlık Topluluk Desteği (Açık Kaynaklı!) https://www.djangoproject.com/community/ https://www.djangopackages.com/ ve http://pinaxproject.com/ https://groups.google.com/group/python-istanbul Lezzetli dökümantasyonu

Neden Django? - 2 Python! Template Desteği ORM (Nesne-veritabanı eşleştirmesi), farklı veritabanlarının kullanımına izin vermesi Otomatik Admin Arayüzü Regex temelli URL Dizaynı Caching Yapısı (veritabanı, local memory, redis v.s.) i18n, l10n Komut satırı arayüzü Geniş deployment olanakları

Nerelerde kullanılıyor? Pinterest Disqus Instagram Mozilla Bitbucket.. Markafoni Morhipo Metglobal (tatil.com).. Newyorktimes.com Guardian.co.uk Kaynak: http://www.djangosites.org/

PYTHON (özetin özeti) Dinamik bir programlama dili Exception desteği Yorumlanabilir (interpreted) Duck-typing Nesne Yönelimli (Object- Oriented) Fonksiyonel bir dil Obsesif-Kompülsifler için :) Pep8 ile düzenli, okunabilir kod yazımı Batteries Included! (İhtiyacın olan kitaplıkların beraberinde gelmesi) Topluluk Desteği! Güçlü namespace yapısı

PYTHON Interaktif Kabuk(Shell) Boolean ve Null değerler: True, False, None String, 'python stringi', python string!, u çişüğ String İşlemleri: foo + bar, foo [:1], len( foo ), foo.upper() Nümerik Tipler: 42, 42.0, 42L Listeler, Tuple'lar, Set'ler: ['a', 'b', 'c'], ('python', 'owtg'), set(['a', 'b', 'c']) Liste İşlemleri: [...](0), [ ].append(4), [ ].pop(), len([...]) Sözlükler: {'key3': 'value3', 'konferans': 'owtgconf2013'} Sözlük İşlemleri: { }['key3' ], { }.keys, len({...}), { }.items

PYTHON Atama ve Karşılaştırma: foo = 'bar', foo == 'hede', foo!='hodo', foo is None, foo is not None Akış Kontrolü: if..elif..else, for, foreach, while.. Fonksiyonlar: def foo(*args, **kwargs): return (args, kwargs) Dekoratörler: @dekoratorum('owtg2013') def fonksiyon(): return 42

PYTHON Sınıflar: class Foo(object): def init (self, bar): self.bar = bar Docstring yapısı: sınıflara ve fonksiyonlara açıklama yazabilme. Exceptionlar: try..except..else..finally Namespaceler: import logging from datetime import tzinfo as taymzon Introspection: herhangi bir objenin hangi elemanlara sahip olduğunu görebilme

PYTHON Generator'ler: yield anahtar kelimesi List, Set, Dictionary Comprehension: S = [x**2 for x in range(10)] Bağlam Yöneticileri (Context Manager): with ifadesi, enter ve exit metodları Sınıf dekoratörleri Abstract Base Class'lar Meta Sınıflar (Metaclasses) Daha da fazlası için Stackoverflow Sorusu: Python progression path - From apprentice to guru http://stackoverflow.com/q/2573135/566715

PYTHON - PEP8 Tab değil boşluk 4 boşluklu girintiler Tab ve boşlukları karıştırmamalı, birlikte kullanılmamalı! kucuk_harf_metodlar BuyukHarfSiniflar 80 karakteri geçmeme kuralı v.s...

DJANGO - Kurulum Virtual Environment! virtualenv, virtualenvwrapper İstediğiniz python paketlerini kurabildiğiniz, sisteminizde herhangi bir şeyi bozmadan kullanabileceğiniz bir sanal ortam sağlıyor Virtual Environment'ı kurduktan sonra: pip install django ya da pip install django==1.5 requirements dosyası pip install -r requirements Python 2? Python 3?

Django'da İşler Nasıl Yürüyor?

Django'da İşler Nasıl Yürüyor?

Django - Proje Proje demek sizin websiteniz demektir. django-admin.py startproject owtg owtg owtg init.py settings.py urls.py wsgi.py manage.py

Django - Proje init.py: Boş bir dosya, dizinin python paketi olarak görülmesini sağlıyor. manage.py: Django ile iletişiminizi sağlayan komut satırı uygulaması settings.py: Ayarların durduğu dosya urls.py: URL tanımlarının yapıldığı dosya, bir nevi Django web sitenizin İçindekiler bölümü wsgi.py: WSGI uyumlu sunucularda sitenizi çalıştırmak istiyorsanız giriş noktanız.

Django - Proje Proje dizinine girip: python manage.py runserver komutunu verdiğinizde, 127.0.0.1:8000'de:

settings.py Temel ayarlarınızı belirttiğiniz dosya Genel yaklaşım: try: # Import local settings to override existing values from settings_local import * except ImportError: from settings_default import *

settings.py settings_local.py 'de önce from settings_default import * Sonra da istediğiniz ayarları verebilirsiniz. Böylelikle, settings_local.py'ı sürüm kontrolüne koymayıp geliştiricilerin kendi ayarlarını tutmalarını sağlayabilirsiniz. Herkesin kullandığı ayarlar settings_default.py içinde durur: Veritabanı ayarları Eposta ayarları Statik dosyaların duracağı yerler Kullanılan Uygulamalar v.s...

urls.py Sitede gidilen adresin hangi view tarafından işleneceğini burada belirtiyoruz. Düzenli İfadeler! (Regular Expressions!) Farklı urls.py'ler tanımlayabilir, aşağıdaki gibi include edebilirsiniz.

Python Uygulamaları - Paketler Bir Django sitesi bir çok uygulamadan oluşur. Bunların bir kısmını siz yazarsınız, bir kısmı ise 3rd Party uygulamalardır. python manage.py startapp blog

Python Uygulamaları - Paketler owtg blog init.py models.py tests.py views.py owtg init.py settings.py urls.py wsgi.py manage.py

Python Uygulamaları - Paketler owtg blog init.py models.py tests.py views.py... Uygulamanızın içinde bunların dışında: urls.py forms.py tanımlamak isteyebilirsiniz. Detayları sonraki slaytlarda.

MTV is our MVC Model ----------------------------> Model View ----------------------------> Templates Controller ----------------------------> Views

Model: models.py Kısaca veritabanı yapınızı burada kuruyorsunuz. ORM sayesinde bu model yapısına uygun veritabanı tablolarını oluşturabiliyorsunuz. Örnek: Veritabanında modellere uygun tabloları oluşturmak için: python manage.py syncdb

Model: models.py OneToOne, ManyToMany ve one to many(foreignkey) ilişkilerini tanımlayabiliyorsunuz. Meta alt sınıfı sayesinde admin tarafında hangi alana göre sıralama yapılacağını belirlemek gibi tanımlamalar yapabiliyorsunuz. unicode metodu ile ilgili sınıfın bir instance'ının print edildiğinde ne döneceğini belirtebiliyorsunuz.

View: views.py (en heyecanlı kısmı burası :) ) urls.py'de hangi view a gidileceğinin tanımlandığını söylemiştik. Gelen request'e göre arka taraf ( backend ) işlerinin yapıldığı ve bir response döndürüldüğü yer bu dosyanın içindeki fonksiyonlar ve sınıflardır. Örnek: def my_view(response): return render(request, list.html )

Template: templates dizini Projenin içinde bir templates dizini yaratılıp, settings_py içinde TEMPLATE_DIRS değişkeni içerinde belirtilir. Birden fazla dizin de belirtebilirsiniz. import os PROJECT_DIR = os.path.abspath(os.path.dirname( file ))... TEMPLATE_DIRS = ( ) os.path.join(project_root, "templates"), templates dizini altına Django'nun template desteği içeren html dosyalarınızı koyabilirsiniz.

Template: list.html ve Django Template Dili list.html: <div class= post > {% for post in posts.object_list %} <div class= title >{{ post.title }}</div> <p>{{ post.body truncatewords:50 }}</p> <a href= {% url post post.pk%} >More</a> {% if user.is_staff or user.is_authenticated and user == post.author %} <a href="{% url edit post.pk %}">Edit</a> {% endif %} </div>

forms.py Tanımladığınız modellere giriş yapılmasını kolaylaştıran bir yapı. Ayrıca daha veritabanına herhangi bir şey yazmadan, gelen veri üzerinde kontroller yapabilirsiniz. Burada anahtar kelime: Form Validation. Hazır formları kullanabilir, ya da kendiniz yazabilirsiniz. from django import forms class MyForm(forms.Form): name = forms.charfield(max_length=30) email = forms.emailfield()

forms.py Formları bir view içerisinde kullanmak: from blog.forms import MyForm def my_view(request): form = MyForm(request.POST or None) if request.method == "POST" and form.is_valid(): name = form.cleaned_data['name'] email = form.cleaned_data['email'] # veriyle bir şeyler yapabilirsiniz, örn: modelin save() metodunu # çağırıp veritabanına kaydedebilirsiniz v.s. return render(request, 'myform.html', {'form': form})

İşinize yarayacak Django uygulamaları django-extensions: Django içinde olmayan, ama yararlı bir çok manage.py eklentileri içermektedir. Hayatınızı kolaylaştıracaktır. https://github.com/django-extensions/django-extensions south: Django projeleri için veritabanı şeması ve veri göçü işlerini sağlayan bir uygulama. http://south.aeracode.org/ ipython ve ipdb: Tab ile tamamlama desteği, renkli kod gösterimi gibi özelliklere sahip python kabuğu ve hata ayıklama konsolu. Python konsolu ve pdb hata ayıklama aracını aramayacaksınız.

Öneriler Django dökümanlarını bol bol gezin, tutorial'ı https://docs.djangoproject.com/en/1.5/intro/ mutlaka anlayarak bitirin! Kendiniz mutlaka, en az bir uygulama yazın. Topluluğun bir parçası olun, yeni çıkan, trendde olan Django uygulamalarını takip edin. Django-Users https://groups.google.com/group/django-users e-posta listesine üye olun, sorunuz olursa bu listeye ya da freenode üzerinde #django kanalına sorun. Python-Istanbul https://groups.google.com/group/python-istanbul grubuna üye olun, toplantılara katılın. Daniel Greenfield ve Audrey Roy'un yazdığı Two Scoops of Django kitabını https://django.2scoops.org/ edinin.

SORULAR? Teşekkürler.

Kaynaklar Mike Crute, Mike Pirnat, David Stanek: Web Development with Python and Django - http://slidesha.re/16n7uin Django başlangıç dökümantasyonu (Tutorial) : https://docs.djangoproject.com/en/dev/ Two Scoops of Django: https://django.2scoops.org/