İLK DJANGO PROJENİ YAZ, part 1

Bir örnekle öğrenmeye başlayalım. Bu örnekte basit bir anket uygulaması oluşturacağız. Uygulama iki kısımdan oluşacak:

  1. Anketlerin oylanması için herkese açık bir site

  2. Anketleri düzenlemek veya ekleyip silmek için bir admin paneli

Senin Djangoyu yüklediğini varsayıyoruz. Komut isteminde aşağıdaki komutu çalıştırarak Djangonun yüklü olup olmadığına ve Django sürümüne ulaşabilirsin:

python -m django --version

Eğer Django yüklüyse yüklü olan versiyonu görmelisin. Eğer değilse “No module named django” yazısı ile karşılaşmalısın.

Bir proje oluştur

Komut satırında cd komutuyla komutunuzu saklamak istediğiniz dizine gidin ve aşağıdaki kodu çalıştırın:

django-admin startproject mysite

Bu kod bulunduğunuz dizinde mysite dizinini yaratacak. Şimdi startproject komutunun oluşturduklarına bakalım:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

En dışardaki mysite/ dizini, projeniz için sadece bir kapsayıcıdır. Adı Django için önemli değil. Beğendiğiniz herhangi bir şeyle yeniden adlandırabilirsiniz. manage.py: Komut satırından django projesiyle etkileşime geçmenizi sağlayan bir programdır. İçerideki mysite/ dizini , projeniz için gerçek bir python paketidir. mysite/init.py: Boş bir python dosyasıdır. mysite/ dizininin python paketi olmasını sağlar. mysite/setting.py: Django projesinin ayarları ile ilgili bir dosya. mysite/urls.py: Projeniz için URL’leri barındıran dosya. mysite/wsgi.py: WSGI uyumlu web sunucuları için projenize hizmet edecek bir giriş noktası.

Geliştirme sunucusu

Şimdi django projemizin çalışıp çalışmadığını kontrol edelim. Komut satırında dışarıdaki mysite dizinine gidin ve aşağıdaki kodu çalıştırın:

python manage.py runserver

Çıktı olarak şunu görmelisin:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

April 29, 2018 - 15:50:53
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Not

Veritabanıyla ilgili uyarıyı dikkate almayın.

Django geliştirme sunucusunu başlattınız.

Kullanılan portu değiştirme

runserver komutu geliştirme sunucusu için standart olarak 8000 portunu kullanır. Eğer bu portu değiştirmek isterseniz bunu komuta argüman olarak verin. Mesela aşağıdaki komut 8080 portunda geliştirme sunucusunu çalıştırıyor:

python manage.py  runserver 8080

Eğer sunucunun IP adresini değiştirmek isterseniz port ile birlikte belirtin. Örnek olarak kullanılabilir tüm IP’leri dinlemek istiyorsanız şu kodu çalıştırın:

python manage.py runserver 0:8000

Yukarıda yazdığımız kodda 0’ın anlamı 0.0.0.0 (Yani bir kısaltma).

Bir anket uygulaması oluşturalım

Artık proje ortamımız kuruldu. Çalışmaya başlayabiliriz. Django’da yazdığımız her uygulama bir python paketinden oluşur ve Django’da uygulamanın dizini otomatik olarak oluşturulur. Bu sayede dizin oluşturmakla uğraşacağımız zamanda kod yazabiliriz. Bir uygulama oluşturmak için komut satırında manage.py ile aynı dizine gelin ve şu komutu yazın:

python manage.py startapp polls

polls isimli bir dizin oluşturulacak. Bakaklım içinde neler var:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

Bu dizin anket uygulamamızın merkezi olacak.

İlk view’ımızı yazalım

Hadi yazmaya başlayalım. Şimdi polls/views.py açın ve şu kodları yazın:

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Bu Django’da yazılabilecek en basit view. Artık bu view ı çağırabilmek için bir URL haritasına ihtiyacımız var ve URL haritası için de URL şemasına. polls dizininde urls.py isimli bir dosya oluşturarak uygulamanın URL şemasını da oluşturmuş oluruz.(Dosya Gezgininden kendiniz urls.py isimli bir python modülü oluşturun.) Uygulama dizini son olarak şöyle görünmeli:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
    urls.py

Şimdi de yeni oluşturduğumuz polls dizinindeki urls.py dosyasında şu kodlar yazılı olmalı:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

Burada oluşturduğumuz URL şemasını gerçek Url şemasında tanıtmanın vakti geldi. Bunun için mysite dizinindeki urls.py dosyasında include fonksiyonunu içe aktarıp url listesini aktarmada kullanacağız. Sonuç olarak mysite dizinindeki urls.py dosyanız şu hale gelmeli:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Artık index view’ını bir dizine bağladınız. Test etmenin vakti geldi. Komut satırında şu kodu çalıştırın:

python manage.py runserver

include() fonksiyonu diğer URL şemalarına ulaşmamıza izin verir. Django include ile karşılaştığında eşleşen URL’yi kalan işlemler için verilen URL şemasına gönderir.

Yorumlar

Önemli Not

Sorularınızı yorumlarda dile getirmek yerine Yazbel Forumunda sorarsanız çok daha hızlı cevap alabilirsiniz.
Belgelerdeki bir hata veya eksiği dile getirecekseniz lütfen yorumları kullanmak yerine Github'da bir konu (issue) açın.
Eğer yazdığınız yorum içinde kod kullanacaksanız kodlarınızı <pre><code> etiketleri içine alın. Örneğin:
        <pre><code class="python">
        print("Merhaba Dünya!")
        </code></pre>