• gençler az gelin, python-django programlama konusunda sizin ufkunuzu biraz açayım. ufkunuzdan ziyade kolayca programlamaya girmeniz için size bir tavsiyede bulunayım. hoş bunun için genç olmana ya da bilgisayar mühendisliği okumana da gerek yok. eminim kafa yoran herkesin gayet güzel yapabileceği bir programlama dili... temelde python - django öğrendiğiniz taktirde siz'de bir girişimci olabilirsiniz.

    şeker gibi, bal gibi, kaymak gibi bir python web framework'u. jango diye okunur.

    böyle konuştuğuma bakmayın ben de çok yeniyim pythonda. lakin bu entry yi yazma sebebim hayvan gibi araştırma yaptım ve neden python - django ' yu seçtiğimi adım adım anlatmak istedim. (hayvan gibi vurgusu sadece vurgu için değildi. bildiğin hayvan gibi araştırdım işte. abartı yoktur.)

    önce şu php konusuna bir değineyim... mesela neden php değil...

    yıllardır php üzerinde projeler yapmış, aylık milyonlarca insanın kullandığı girişimleri olan ben bile php yi henüz öğrenmiş değilim. lafa gelince "yeaaa ben girişimciyeeam" diye sallıyorum ama şöyle bir programlama dili filan bi bok bildiğim yok... evet odunum.* ama aslında odun olmaktan ziyade birkaç kere php öğrenmek için atılımım olsa da bırakmışlığım çok oldu. ki ben başladığı işi bitiren takıntılı tiplerdenim...

    php öğrenmememin en büyük sebebi, ihtiyacım olan yazılımı para ile kolayca satın alabilmemdi. bakın piyasada zibilyon tane php ci var. php bilen kişi sayısı çok fazla olunca bir proje için adam bulmak da bir o kadar kolay ve ucuz oluyor. düşük ücretlere istediğiniz bir projeyi yaptırabiliyorsunuz. evet acı ama maalesef gerçek. çok fazla php bilen adam olduğu için ne yazık ki php konusunda insanlar emeklerinin karşılığı kadar yüksek paralar kazanamıyor. pis kapitalist düzen

    php nin bir diğer kötü yanı da hazır sistemlerin (örneğin wordpress) hiçbir yazılım bilgisi olmadan kurulması. evet bu hızlıca web sitesi kurulum için kolay fakat kendinizi geliştirmeniz için büyük bir tuzak gibi. öyle ki aklınızda bir proje var. gidiyorsun wordpress kuruyorsun. lakin sonra projene ekleme yapmak istediğinde mal mal ekrana bakıyorsun... çünkü temel php özelliklerini öğrenmeden wordpress öğrenmiş oluyorsun ve programcılıktan çok uzaklaşmış oluyorsun...

    e hal böyle olunca php öğrenmek bana hep külfet olarak geldi. doğru mu? değil elbet. hele hele piyasanın içinde olan birisinin yazılım öğrenmemesi utanılacak bir mesele... ama neticesinde işi yapmak için harcıyacağım paraya bakıyorum sonra php öğrenmek için gerekli olan zamana ve iş gücüne bakıyorum, zaman benim için hep daha değerli geliyor... bu yüzden bu işleri bugüne kadar hep parayla yaptırdım...

    ama gün geldi çattı dedim bir şeyler öğreneyim artık. sıkı bir şekilde araştırdım. sıkıdan kastım neredeyse tanıdığım her programcıyla konuştum, tüm yabancı ve türkçe içerikleri okudum veya videoları izledim... sonucunda her ne kadar türkiye'de piyasası az olsa da python öğrenme konusunda karar kıldım.

    aslında python ile ardunio ile tanışmıştım. robotik kodlama yaparken ulan ne kolaymış dedim geçtim. o zamanlar çok üzerine düşmemiştim. ama teee o zamanlar sevmiştim python'u...

    peki web projeleri için neden python-django;

    öğrenmesi gerçekten çok kolay. yazımı da kolay. e okunması da kolay. daha ne olsun. çok kısa sürede programlama mantığını kavrayabiliyorsunuz... kolay yazılıp çizilmesi bu işin amatör olduğu anlamına da gelmiyor. bu kısmı iyi anlamanız gerekiyor. django çok güçlü bir yapıya oturtulmuş bir profesyonel framework'tür.

    php'de yaptığınız tüm projelerin aynısını yapabilirsiniz. yazım farkından başka hiçbirşey yok. hiçbir eksiği de yok. -burada php yi kötülemiyorum ama python ile php nin yapabildiği her şeyi pek tabii yapabileceğinizi belirtmek istedim.

    güvenlik konusunda çok başarılı. henüz bir güvenlik tecrübem olmadı aslında. kimse projelerimi hacklemeye çalışmadı ama aldığım bilgilerle göre django'nun güvenlik konusunda çok ileride olduğunu öğrendim...

    django çok hızlı. aslında python çok hızlı. bu ister istemez django'ya da yansıyor. ağır projelerinizde gerçekten performans olarak bilindik php-laravel den filan çok daha hızlı. hoş hız olayı genel olarak projenin nasıl yazıldığı ile ilgilidir ama aynı projeyi hem php-laravel de hem djangoda aynı şekilde yazarsanız django'nun 2 kat hızlı olduğu istatistikleri dolaşıyor etrafta...
    edit: alttaki bir arkadaş hızlı değil demiş ama buyrun güncel benchmark'lar :
    https://www.techempower.com/…ta-r17&hw=ph&test=json

    bir diğer konu çok düzenli. her dosyanın yeri belli. her modülün yeri ayrı. düzgün yazdığınız taktirde bir kere yaptığınız modülü bir başka projeye entegre etmeniz sadece 30 saniye sürüyor. boşuna bal gibi kaymak gibi demiyorum...

    python dünyanın en çok kullanılan 3 dili arasında yer alıyor. yabancı kaynaklı community pythonda çok çooook büyük... her ne kadar türkiye'de kaynak sıkıntısı olsa da, yurt dışında php ye oranla kaynak çok daha fazla...
    merak edenler için dünya'da en çok kullanılan yazılım dilleri sıralaması şu şekilde

    1- java
    2- c
    3- python
    ..
    ..
    ..
    9- php

    ayrıca github'da çok fazla referans alabileceğiniz yapılmış ve halen gelişmekte olan modül bulunuyor. üstelik bunların çoğu da ücretsiz...

    mesela neden dünyada en çok kullanılan dil olan java yı seçmedim. çünkü zor. hayvan gibi zor. yazımı zor, okuması zor, anlaması zor. he güzel mi tabiki güzel bir dil. gönül ister öğrenmenizi ama benim gözümü korkutan bir yazılım dili... c de aynı şekilde. kurumsal firmaların gözbebeği. öğrendiğiniz taktirde ölene kadar iş garantinizin olduğu bir dil bunlar. ama bunları öğrenmek zor işte arkadaş.

    python'u bunlardan değerli yapan en bilindik özelliği öğrenmesi çok kolay olması ve neredeyse diğerlerinin yaptığı her şeyi yapabilmesi...

    peki django'nun zorlukları neler;

    efenim her güzelin kusuru vardır. bana göre django'nun en büyük zorluğu localde çalıştıktan sonra projelerinizi bir web sunucuya atmak. yani projenizi canlı yayına geçirmek... aslında 1-2 kere yapınca eliniz alışıyor ama bir php projesi gibi kolayca çalıştıramıyorsunuz. apache/nginx ayarlarını filan bilip yapmanız gerekiyor. neyse ki bununla ilgili yapılmış tonlarca tutorial var. onlar sayesinde yapabilirsiniz.

    ikinci bir konu django örneğin wordpress kadar kolay kurulmuyor. aslında bu üstte yazdığım paragraf ile bağlantılı gözükse de aynı şeyler değil. biz alışkınız wordpress'in 5 dk içinde kurup siteyi hazır hale getirmeye... django ile siteyi (sunucu ayarları dahil) ayağa kaldırmak en az 20 dk sürüyor. hoş bu süre el alıştıkça azalacaktır...

    bir diğer kötü yanı türkçe dökümantasyon ya da türkçe kaynak bulmanın gerçekten zor olması. çünkü çok az kaynak var. o yüzden sorunların altından kalkabilmeniz için mutlaka orta düzey bir ingilizce gerekiyor. zaten bu yüzden türkiye'de henüz ele ayağa düşmüş değil. hoş bana göre bu kötü bir yanı değil..

    peki django sana ne katacak.

    öncelikle gerçekten öğrenmek / sorun çözmek için araştırma yaparsan hayvan gibi bir teknik ingilizce öğrenmiş olacaksın. bununla birlikte linux, css, javascript, html de pek tabii öğreneceksin. öğrenmek zorundasın çünkü... wordpress de de javascript, css ve html bolca vardır. ama sen ne yapıyorsun, eklentilerden bir eklenti bulup ekle diyorsun. o eklenti bir sürü javascript filan çalıştırıyor ama sen bunlardan bir haber o işi yaptım diye seviniyorsun. sonra en ufak bir problemde çakılıp kalıyorsun...

    sonra efenim django ile kolayca aklındaki web projelerini hayata geçirebileceksin. aklına gelen ve matematiksel olarak yapılabilecek her projeyi django'da hayata geçirebilirsin.

    ve en en en önemlisi python dilini öğrenmiş olacaksın.

    bunu en son yazdım çünkü python dilini öğrenmek gerçekten çok önemli. bakın python öyle bir dil ki, uzay mekiğinden, ardunio ya kadar tüm alanlarda kullanabilirsin. ister pc için masaüstü bir uygulama yap, istersen telefonun için bir uygulama, ister websitesi. python ile sadece işletim sistemi hariç her şeyi yapabilirsiniz. python'un bir sınırı yok. neredeyse her şeyi yapabileceğin bir programlama dilini öğrenmek bile yeterince keyifli bence...

    python öğrenmeyi, django öğrenmekten önce tutmanız gerekiyor. çünkü django kullanırken ilk bakışta pek python bilgisine ihtiyaç yokmuş gibi gözükse de öyle değil. projenin mimarisine başladığınızda çözümler gene python kodlarında yatıyor... demem o ki önce python öğreneceksin sonra django... öğrenme sıralamasını sakın karıştırmayın...

    bu yazıyı çok sık güncellemeyeceğim ama zaman ilerledikçe ben de ilerlememi buraya yazarım...
  • python yazılım dili ile hazırlanmış, yüksek seviyeli bir web-frameworküdür. sadece bir kaç satır kod ile projenizi başlatabilir, tek bir satır kod ile yeni applikasyonlar yaratabilirsiniz. lokalde sunucunuzu çalıştırıp, canlı olarak değişiklikleri izleyebilirsiniz.

    modüler yapısı sayesinde, farklı projelerdeki applikasyonlarınızı yeni projenize çok rahat taşıyabilirsiniz. flask'e göre çok daha yoğun bir öğrenme eğrisine sahiptir. yani öğrenene kadar biraz yorulursunuz ama öğrendikten sonra ortaya çıkaracağınız projelerde sınır sizsinizdir. zaten, python da olduğu gibi, sayısız kaynak bulabilirsiniz.

    sürekli güncellenmekte ve gelişmektedir. iki senede bir, çok sağlam geniş güncelleme gelir ve bu güncellenmiş sürümler en az 3 yıl süreyle desteklenir ki açık kaynak kodlu bir proje için inanılmaz bir süredir. hazır ama genişletilebilir bir admin paneli ile gelir ve işinizi oldukça kolaylaştırır. güvenlik açısından oldukça sağlamdır. djangoyu kullanan bazı ünlü web siteleri:

    -disqus
    -ınstagram
    -knight foundation
    -mozilla
    -national geographic
    -open knowledge foundation
    -pinterest
    -open stack

    eğer web geliştirmeye yeni başlayacaksanız, front-end ve back-end kavramlarını iyi analiz edin. django öğrenmeniz sizi back-end konusunda geliştirir ancak yine de tasarım ve front-end için bootstrap, javascript vb teknolojilere aşina olmalısınız. django ile rest-api uygulamalarını da kolaylıkla yapabilirsiniz. eğer içerik yönetimi ile ilgili projeler yapacaksanız ki, muhtelemen öyle, wagtail'in de ne olduğuna bir bakın. django öğrendikten sonra bu hazır şablonla çok daha hızlı yol alabilirsiniz projelerinizde.

    eğer django öğrenmek istiyorsanız, şiddetle aşağıdaki udemy kursunu öneriyorum. uzun soluklu bir kurs. size html , css , bootstrap , javascript , jquery , python 3 ile alakalı da hızlı eğitimler veriyor. zaten portilla abinin 80 binden fazla öğrencisi olmuş. kurs ingilizce ama türkçe alt yazı seçeneği de var (hiç denemedim, o yüzden alt yazı kalitesine bişey diyemiyorum).

    kurs linki

    ınternette rasgeldiğim bir türkçe makale
  • yaklaşık 3 aydır django ile geliştirdiğim proje sonucu benim gibi yeni başlayanlara yol göstermek için birkaç tüyo vermek istiyorum.

    * select_related ve prefetch_related metodlarını kesinlikle öğrenin.
    * mümkünse ve inatla class based view kullanmaya özen gösterin.
    * django debug toolbar olmadan olmaz.
    * two scoops of django kitabını okuyun. *
    * tüm modelleri tek app içine değil parça parça applara bölerek kullanın.
    * djangonun varsayılan user modelini özelleştirin.
    * model manager'leri öğrenin.
  • adamlar bir web framework yapalım, içine her şeyi dolduralım ve bunu genişletilebilir yapalım diye düşünmüşler.

    framework içerisinde neler var:
    + birden fazla uygulama.
    + pythonun tüm avantajları.
    + database modelleme.
    + html template engine.
    + kullanıcı ve rol yönetimi.
    + url routing.
    + admin ile model yönetimi ve genişletilebilir admin paneli.
    + statik dosya yönetimi.
    + cache yönetimi ki, çok güçlü bir cache yönetimi var.
    + log yönetimi.
    + syndication (rss, atom vs) için hazır yapı.
    + mvt yapısı(model view template).
    + dil(localization) desteği.
    + performans odaklı yapısı.
    + session yapısı.
    + pagination yapısı
    + serialization.
    + mesajlaşma yapısı(messages framework)
    + email gönderme vs gibi basit ama etkili hazır sınıflar.
    + güçlü güvenlik yapısı(security)
    + wsgi serverlar ile çalışabilmesi(uwsgi de coşuyor söyliyeyim)
    + daha saymadığım bir çok hazır sınıf ve özellik.

    tam anlamıyla bir web framework sunuyorlar. python biliyor, php ya da asp.net mvc den geçmişseniz öğrenme süreniz dökümantasyon sitesi ile 1 hafta!

    dökümantasyon

    eksileri var mı? var tabiiki:
    - cache bazen delirtiyor.
    - kodlayan arkadaşlar her versiyonda bir şeyleri değiştirebiliyor. dökümantasyonu iyi takip etmek gerekiyor.
    - asp.net mvc den geçenler ya da laravel den, django mvc değil mvt dir. url yazmaktan sıkılabiliyorsunuz ve regex bilmiyorsanız kafanız ağrıyabilir. controller yok arkadaşta.
    - rest yapısı yok. onun yerine: django rest framework kullanmanız gerekecektir.

    bunlar can sıkıcı değil. eliniz bir kere alışsın, özellikle modellemeye. keyiften dört köşe olabilirsiniz. kodu yaz, migrate et ve database hazırlansın. tek satır sql yazmanıza, veritabanı dizayn etmenize gerek yok.

    en iyi ideler ise: visual studio 2015 ve pycharm 4 ve üzeri. özellikle visual studio 2015 aşmış bu konuda. helal sana microsoft!!!

    not:
    bazı hazır modülleri var ki süperler. ben şunları kullanıyorum:

    django rest framework - rest yapısı için.
    django-htmlmin - html çıktısındaki gereksiz boşlukları kaldırmak ve sayfa boyutunu azaltmak.
    django-debug-toolbar - browser tabanlı debug.

    burdan da istediğiniz modülleri bulabilirsiniz

    edit: link düzeltildi.
  • tutorial'dan:

    "and there's no need to add url cruft such as .php -- unless you have a sick sense of humor, in which case you can do something like this:

    (r'^polls/latest\.php$', 'polls.views.index'),

    but, don't do that. it's silly."

    skjhfd sabah sabah guldum jango. bi cay iceyim.
  • python ile geliştirilmiş web framework.

    laravel ile azıcık oop bilmeme rağmen, jquery + bootstrapt + php süper üçlüsünü kullanarak sözlük klonu yapmıştım. övünmek gibi olmasın ama özellik ve tasarım olarak ekşi sözlükten iyiydi. * *

    sonra django'nun şanı bana kadar geldi. "millet python'a şiirler, türküler yazdığına göre, laravel php'yi altın çağına ulaştırdığına göre, o zaman ben bu django ile facebook klonu yazarım lan" diyerek bir iki gün önce öğrenmeye başladım.

    çok heyecanlıyım. facebook klonu değil ama basit bir sosyal ağ yapacağım.

    buraya kadar gelmişken youtube'da bulduğum bir seriyi paylaşayım: youtube

    gelecekten gelen ben: ahahaha. insan cahil olunca kendini iyi kaptırıyormuş. önce otur biraz soket, asenkron programlama, unit test falan öğren. framework güzel ama ben de iyi gaza gelmişim.
  • django daha önce de yazıldığı gibi python ile web uygulaması geliştirmek isteyenlerin kullanabileceği bir framework.

    peki framework nedir? çok kısa bir tanımlama ile herhangi bir uygulama geliştirirken size yardımcı olan,belli standartları takip edebileceğiniz , hazır yazılmış paketleri kullanabileceğiniz bir altyapı. çok basit bir örnek vermek gerekirse örneğin django özelinde kullanıcı login işlemi için sıfırdan bir yapı kurmak zorunda değilsiniz. hazır bir login yapısı ile çok hızlı şekilde bir login sayfası hazırlayabilirsiniz. tabii ki django'nun standartlarına uymak koşulu ile.

    django python web uygulamaları için tek alternatif değil. irili ufaklı 10'dan fazla framework var. ama en büyüğü django. ardından da flask geliyor. django flask'a göre biraz daha kapsamlı denebilir. bu sebeple de alışması biraz daha zor. buna katlanmak koşulu ile en azından şimdilik framework seçeceksiniz django doğru bir tercih.

    django karmaşık gibi gözükse de temel olarak 3 katmandan oluşuyor. bu da mvt olarak kısaltılıyor.

    m kısmı modellemeye karşılık geliyor. eğer bir web uygulaması oluşturuyorsanız çok büyük ihtimalle bir veri modeli ve buna bağlı olarak da bir veritabanı ihtiyacınız olacak. django'da bu işi orm yardımı ile kolayca yapabiliyorsunuz. sql ile yazılacak select,create v.b komutlara ihtiyaç duymadan sadece class tanımları ile veri modelinizi yani tablolarınızı,bu tablodaki alanları ve alanlar arasındaki kuralları tanımlayabilirsiniz. django kullanmanın önemli avantajlarından biri bu kısım.

    v kısmı view'den geliyor. çok basit şekilde backend kodlarınızı burada yazacağınızı düşünebilirsiniz. yani web uygulamanızın arka plandaki tüm yapısı burada bulunuyor.

    t kısmı da tahmin edebileceğiniz gibi frontend tarafı template'ler. browser ile ulaştığınız sayfa yapılarını ve tasarımı da burada oluşturuyorsunuz. bu tarafta işin içine html,css,bootstrap,javascript gibi bazı kavramlar da giriyor ama bu yapıların django özelinde bir farklılığı yok. diğer teknolojilerde bu yapıları nasıl kullanıyorsanız django ile de öyle kullanacaksınız.

    bu mvt'lerin ilişkilerini de url dosyanızda tanımladıktan sonra artık en basit hali ile bir uygulama geliştirebilecek durumdasınız.

    uygulamanızda formlar var ise, bunları da arka tarafta tanımlayıp, template'lerde bu formları çağırmanız mümkün. yani illa ön tarafta html üzerinden form tanımlamaları yapmanıza da gerek yok. form'ları oluştururken tek yapmanız gereken ilk aşamada tanımladığınız model'ler ile ilişkilendirmek.

    django bir framework'den beklediğiniz birçok konuda sizi tatmin ediyor. standart olarak gelen birçok hazır yapıyı kullanarak örneğin bir login işlemini çok kısa sürede kodunuza ekleyebiliyorsunuz. ya da hazır bir data modeli kullanarak örneğin kullanıcı yapısını baştan kurmadan hızlıca kullanabiliyorsunuz. python'un oop yapısını da düşündüğünüzde bu hazır yapıları da modifiye ederek* birçok ihtiyacınızı minimum efor ile giderebilirsiniz.

    ek olarak güvenlik v.b konularda da genel olarak işi django görüyor.

    dezavantajları da genel olarak belirtildiği gibi django'nun yapısını öğrenme eforu,orm'den kaynaklı kimi zaman kompleks sql ihtiyaçlarını çözerken zorlanmak ( burada her zaman klasik sql yapılarını da bir miktar güvenlik riski alarak kullanabilirsiniz) olarak sayılabilir.

    özet olarak django bir okyanus. ama çok temel bilgilerini öğrenerek çok hızlı bir şekilde uygulamalar oluşturmanız da son derece mümkün.

    uygulama geliştirdikten sonra production ortamına almak için de birçok seçeneğiniz var. örneğin: heroku
  • ekmegimi kazandigim (pound uzerinden) framework. django kullanilarak yapilmis populer websiteleri / uygulamalardan bir kuple (kaynak):

    - disqus
    - instagram
    - pinterest
    - lanyrd
    - bitbucket

    yukaridakilere ek olarak django google'a ait, yuzbinlerce ziyaretciyi destekleyen, ve milyonlarca dolar para getiren bir kac projede de kullanilmaktadir.
  • luis enrique bacalov'un seslendirdiği, django unchained soundtrack'lerinden biri.

    http://www.youtube.com/watch?v=iaooxlapobq

    djangoooo

    django, have you always been alone?

    djangoooo

    django, have you never loved again?
    love will live on, oh oh oh...
    life must go on, oh oh oh...
    for you cannot spend your life regreatting.

    djangoooo

    django, you must face another day.

    djangoooo

    django, now your love has gone away.
    once you loved her, whoa-oh...
    now you've lost her, whoa-oh-oh-oh...
    but you've lost her for-ever, django.

    when there are clouds in the skies, and they are grey.
    you may be sad but remember that love will pass away.

    oh django!
    after the showers is the sun.
    will be shining...

    once you loved her, whoa-oh...
    now you've lost her, whoa-oh-oh-oh...
    but you've lost her for-ever, django.

    when there are clouds in the skies, and they are grey.
    you may be sad but remember that love will pass away.
    oh django!
    after the showers is the sun.
    will be shining...
    django!
    oh oh oh django!
    you must go on,
    oh oh oh django.
hesabın var mı? giriş yap