Girizgah
Merhabalar. Bu belge, Django'yu öğrenirken DjangoBook1 sitesinden aldığım, biriktirdiğim notlardan oluşmuştur. Belgenin tamamen kusursuz olduğu veya anlatımının çok iyi olduğu konusunda bir garanti vermiyorum; fakat yine de size yardımcı olabilecek notlar bulabileceğinizi umuyorum. Ayrıca, belge ile ilgili bir yanlışlık veya anlatmamı istediğiniz bir nokta olursa, eposta adresimi kullanarak benimle iletişime geçebilirsiniz:
Not:Django'nun ne olduğu, neden onu seçmemiz gerektiği; bu projenin hangi amaçla ortaya çıkarıldığı ve gelişimi hakkında bilgiler, belgeyi kısa tutmak için verilmemiştir. İnternet zengin bir okyanus :-)
Django'ya Başlamak
Çok değil, Şubat 2007'den beri GNU / Linux kullanıyorum ve onu kullanmaya başlamakla programlamaya ilgim hemen hemen aynı zamanlara denk geliyor. İnternet sitesi tasarımlarına ve programlamasına ilgi duyduğum için ilk olarak PHP'ye yönelmiştim ve hiçbir şekilde framework'un ne anlama geldiğini, ne işe yaradığını çözemememiştim. Hatta bir ara framework ile kastedilen şeyin Wordpress, Joomla ve benzeri şeyler olduğunu zannederdim (belki onlara da framework deniliyor olabilir). İngilizce sözlüğe baktığım zaman karşıma çıkan Türkçe anlamları da beni bir o kadar çıldırtmaya yeterdi: Çatı, çerçeve, web çatısı, web framework.. Yeni başlayan, tecrübesiz kişiler için bu sözcükler gerçekten bir anlam ifade etmiyor.
Sonra, güzel bir deneyim yaşadım. Ben yapacağım her site için tekrar tekrar açıp kodlara bakmak durumunda mıyım? Örneğin, alt tarafı sitenin ana sayfasında bir yazı göstermek için her defasında kodlarla cebelleşmek ne kadar akla mantığa uygundur? Üstelik zaman kavramı da hayatımızın her alanında olduğu gibi, programlamada da son derece önemli, sizce de öyle değil mi? Sıfırdan site yapmak yerine Joomla kuralım, temasını biraz değiştiririz, hazır site kalıbından çıkarmak da çok zor bir şey olmasa gerek hem, öyle değil mi?
Nitekim, nasıl ki kaslarımızı amacı doğrultusunda daha rahat kullanabilmek için kemiklere ihtiyaç duyuyorsak, yapacağımız siteler için de güzel bir altyapıya ihtiyaç duymamız olası, hele ki Python'da. İşte, buna framework deniyor. Düşünün, bir forum veya portal site yapacaksınız. Ama yönetim arayüzü yok :-). Ya da hiç düşünmeyin, hemen Django'yu kullanabilmemiz için neler gerekiyor, ona bakalım.
Django İçin Gerekli Programlar
Kullandığınız dağıtım veya işletim sistemine göre kurulumları değişeceği için, nasıl kurulacağını burada anlatamayacağım. Basit bir araştırma yeter diye umuyorum.
- Python
- Django
- Veritabanı tercihinize göre, Python'a veritabanı desteği:
- Mysql
- PostgreSQL
- Sqlite
Not: Dipnotlarda verilen linkleri kullanmadan önce Paket Yönetici'nizde araştırma yapınız. Tek başlarına çalışmamakla birlikte, birkaç bağımlılığa da ihtiyaç duymaktadırlar. Örneğin python-mysql'in MySQL'a ihtiyaç duyması gibi.
Nihayet Projemizi Başlatıyoruz
Django için gerekli paketler kurulduktan sonra, projenizi barındırabileceğiniz uygun bir dizinde ilk olarak şu komutu veriyoruz:
gkmngrgn ~/programming $ django-admin.py startproject mysite
Böylece mysite dizinimiz ve dizin içinde de proje için gerekli dosyalarımız oluşturulacak:
mysite/
__init__.py
manage.py
settings.py
urls.py
Projemiz ile ilgili yapacağımız tüm işlemler, oluşturduğumuz mysite isimli dizinimizde yapılacak. Diyelim önemli değişiklikler yaptınız ve sitenizi web tarayıcınız ile kontrol etmek istiyorsunuz. O zaman mysite dizinimizde şu komutu vermeniz gerekir:
gkmngrgn ~/programming/mysite $ python manage.py runserver
Validating models...
0 errors found.
Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Evet, komutun çıktısında da görebileceğiniz gibi, sitenizi http://127.0.0.1:8000/ adresinden kontrol edebilirsiniz. İşlemi sonlandırmak için CONTROL-C tuş kombinasyonunu kullanmanız yeterli. İsterseniz, sonraki adıma geçmeden önce bir bakalım, localhost'tan nasıl görünüyor?
Çok tatlı, öyle değil mi? Şimdi proje dizinimizde (mysite) views.py isminde bir dosya oluşturup, örnek olarak şunları yazalım, açıklama satırlarını (en baştaki hariç, diğer "#" ile başlayan satırlar) yazmasanız da olur:
# -*- coding: utf-8 -*-
# Önce Türkçe karakter desteğimiz için utf-8'i yazdık.
# Şimdi gerekli modülleri çağıralım.
from django.http import HttpResponse
import datetime
# Sonra da datetime ile saat & tarih bilgilerini alarak HttpResponse'u döndürelim.
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>Saat ve tarihimizi, python modülü kullanarak yazdırdık: %s.</body></html>" % now
return HttpResponse(html)
Proje dizinimizdeki var olan örnek urls.py dosyasını da şu şekilde değiştirelim:
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
# views.py dosyasında yazdığımız fonksiyonu burada çağırıyoruz.
# ama hangi sayfaya..
from mysite.views import current_datetime
# işte hangi sayfaya olduğunu buradan belirliyoruz.
urlpatterns = patterns('',
(r'^time/$', current_datetime),
)
Bu iki kod hakkında şimdilik sadece http://localhost:8000/time sayfasına, zaman ile ilgili bilgilerimizi yazdırdığımızı söyleyeyim. Dikkat edin, eğer Python dosyalarınızda Türkçe karakter kullanırsanız, kodun başına şunu eklemeyi unutmayın:
# -*- coding: utf-8 -*-
[...]
Hadi, hazır python manage.py runserver komutu yürürlükteyken, bir de şu linke bakalım; http://127.0.0.1:8000/time:
NOT: Saat yanlış mı gösteriyor? settings.py dosyasını açın. TIME_ZONE satırını kendinize göre ayarlayın. Türkiye için:
[...]
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'Europe/Istanbul'
[...]
Bir dahaki yazımızda emeklemeye başlayacağız.. :)
merhaba, öncelikle linux ve dolayısıyla da python ve django da oldukça yeniyim, burda söylediklerinizi yapıp 127.0.0.1:8000 adresine girdiğimde
YanıtlaSilIndentationError at /
expected an indented block (views.py, line 9)
Request Method: GET
Request URL: http://127.0.0.1:8000/
Exception Type: IndentationError
Exception Value:
expected an indented block (views.py, line 9)
Exception Location: /home/echo/Desktop/mysite/../mysite/urls.py in < module >, line 7
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: ['/home/echo/Desktop/mysite', '/usr/lib/python25.zip', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/Numeric', '/usr/lib/python2.5/site-packages/PIL', '/usr/lib/python2.5/site-packages/gst-0.10', '/var/lib/python-support/python2.5', '/usr/lib/python2.5/site-packages/gtk-2.0', '/var/lib/python-support/python2.5/gtk-2.0']
gibi bir uyarı alıyorum. Neyi yanlış yapıyorum bilmiyorum.
python 2.5.2 ve django 1.0 yüklü. ayrıca apache 2, mysql, python-mysqldb de yüklü. bunların neden olacağı bir problem olabilir mi?
cevabınız için şimdiden teşekkürler
Öncelikle aramıza hoşgeldin diyorum ;)
YanıtlaSilHatana gelmeden önce bir kaç öneri yapayım django ve linuxla çalışırken genelde hata mesajlarını dikkatli okumaya çalış çünkü microsoftta olduğu gibi hata raporu gönder gibi kapalı bir ifade yerine açıkça hatanın ne olduğunu ve nasıl çözebileceğine dair açıklamalar göreceksin.
Senin sorunda ise ilk 2 satıra bakarsan
views.py dosyasının 9. satırında birşeylerin ters gittiğini anlarsın. O ters giden şeyde yine 2. satırda "Expected an indented block" ile açıklanmış. Yani 9. satırda senden bir girinti bekliyor. Tahminimce 8. satırda bir döngü ya da bir if kullanmışsın. Pythonda döngülerden, if-else bloklarından,fonksiyonlardan ve sınıflardan sonra her zaman girinti bırakmalısın.
İyi çalışmalar ;)
Evet gerçekten de çalıştı, python da girintiler çok önemli dendiğinde bunu dinlemem gerekiyormuş. Ayrıca bu kadar hızlı cevap verdiğiniz için de sizi tebrik ediyorum.
YanıtlaSilMerhaba,
YanıtlaSilBen bir türlü çalıştıramadım. Daha doğrusu, Django'yu doğru kurduğumdan bile şüpheliyim...
Rica, etsem daha detaylı anlatabilir misiniz ?
Saygılarımla;
Aras, Samet.
Merhaba,
YanıtlaSilBen Django ya yeni giriş yapanlardan biriyim.Ve şu konuda takıldım..Manage.py syncdb komutunu verdiğimde sürekli olarak "self" kelimseinde hata veriyor.Ve bu kelimeyi tanımıyor.Bunun nedeni ne olabilir..Yardımcı olursanız çok sevinirim..
Teşekkürler, iyi çalışmalar...
self'i bir sınıf > fonksiyon içinde kullanmıyor olabilirsin. kodu görmek lazım.
YanıtlaSildef __unicode__(self)
YanıtlaSilreturn self.baslik
return self.aciklama
şu sekilde bir sınıf oluşturdugumda self algılanmıyor..normalde rengi değişmesi gerekiyor ..ama olmadı :(
def __unicode__(self)
YanıtlaSilreturn self.baslik
return self.aciklama
şu sekilde bir sınıf oluşturdugumda self algılanmıyor..normalde rengi değişmesi gerekiyor ..ama olmadı :(
Bu yorum yazar tarafından silindi.
YanıtlaSilImportError at /time
YanıtlaSilNo module named defaults
Request Method: GET
Request URL: http://127.0.0.1:8000/time
Django Version: 1.8
Exception Type: ImportError
Exception Value:
No module named defaults
Exception Location: /home/omer/Masaüstü/mysite/mysite/urls.py in , line 3
Python Executable: /usr/bin/python
Python Version: 2.7.9
Python Path:
['/home/omer/Masa\xc3\xbcst\xc3\xbc/mysite',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
Server time: Sat, 8 Aug 2015 14:01:19 +0000
@omer cebeci, bu yazı 2008 yılında yazılmış. artık "defaults" diye bir module yok, şurada sorunun çözümü var:
YanıtlaSilhttp://stackoverflow.com/a/19962822
Kısaca, artık "from django.conf.urls import patterns, url, include" diyerek import etmelisin.
Cevabınız için teşekkür ederim. Güncel kaynak olarak kullanabileceğimiz bir site önerebilir misiniz?
YanıtlaSilÖnerebileceğim en iyi kaynak Django'nun kendi sitesi: https://docs.djangoproject.com/en/1.8/
SilYakın zamanda Django İstanbul ekibi, bu belgeleri Türkçe'ye çevirme girişimini başlattı, belki siz de bir ucundan tutup bu topluluğa katkıda bulunmak isteyebilirsiniz. Saygılar.
http://djangoist.org/
Our experienced roofers are properly trained and vastly experienced in detecting and fixing all kinds of roofing damage by addressing their root cause.
YanıtlaSil