Ana içeriğe atla

Python ile Django Web Geliştirme

Django kullanarak (CRUD) Create, Read, Update, Delete işlevselliğine sahip blog uygulamaları geliştirmek için web geliştirme temellerini öğrenin.
Güncel 3 Eki 2026  · 12 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Django, yaygın olarak kullanılan, ücretsiz, açık kaynaklı ve üst düzey bir web geliştirme çatısıdır. Geliştiricilere pek çok özelliği "kutudan çıkar çıkmaz" sunar, bu sayede geliştirme hızlı ilerler. Bununla birlikte, ondan oluşturulan web siteleri aynı anda güvenli, ölçeklenebilir ve bakımı kolaydır.

Hedef

Bu eğitimin hedefi, blog içeriğinin bir yönetim paneli üzerinden oluşturulup güncellenebildiği bir blog uygulaması geliştirmektir. Blog içerikleri sayfada görüntülenir ve gerektiğinde silinebilir. Uygulama genel olarak CRUD (Create, Read, Update, Delete) işlevselliği sağlar.

Bu eğitimde Javascript, CSS vb. hiçbir FrontEnd teknolojisi kullanılmayacak; bunun yerine her Django Web Geliştirme sürecinde gerekli olan temel ama kritik kavramlara odaklanılacaktır.

Gerekli Kurulum

  1. Git Bash: Tüm işletim sistemi kullanıcıları kullanabilir. Django ile ilgili tüm komutlar ve Unix komutları bunun üzerinden yürütülür. Git Bash indirmek için: Tıklayın.
  2. Metin Düzenleyici: Sublime Text veya Visual Studio Code gibi herhangi bir metin düzenleyici kullanılabilir. Bu projede Sublime Text kullanılmıştır.
  3. Python 3: Python’un en son sürümünü buradan indirebilirsiniz: Download Python.

Not: Bu eğitimi, Python’un temellerini anlayıp döngüler, fonksiyonlar, sınıflar vb. konulara ve ayrıca bash ya da komut satırına dair biraz bilgi sahibiyseniz kolayca takip edebilirsiniz.

Sanal Ortam

Sanal ortam, Python ile ilgili projelerin bağımlılıklarını yönetir. Belirli bir projeye ait tüm Python paketlerinin ve gereken sürümlerin kurulduğu, kendi kendine yeten bir kap ya da izole bir ortam gibi çalışır. Python, Django veya paketlerin yeni sürümleri çıktıkça, sanal ortam sayesinde projenize özgü eski sürümlerle çalışabilirsiniz. Özetle, aynı bilgisayarda bir yandan Django 2.0 ile ilgili bağımsız bir proje başlatabilirken, diğer yandan Django 3.0 ile ilgili başka bir bağımsız projeye de başlayabilirsiniz.

Not: Sanal ortam oluşturmanın birçok yolu vardır, aşağıda yalnızca bir yöntem gösterilmiştir.

Sanal Ortam Oluşturma Adımları

  1. Masaüstünüzde 'mkdir' komutunu kullanarak 'project-blog' adlı yeni bir dizin oluşturabilirsiniz.
  2. 'cd' komutunu kullanarak dizini 'project-blog' olarak değiştirin.
    Steps to Create a Virtual Environment

  3. Sanal ortam 'python -m venv env' komutuyla oluşturulur; burada env, 'ls' komutuyla görülen sanal ortamımızdır.
    Steps to Create a Virtual Environment

  4. Sanal Ortamınızı Etkinleştirmek İçin: Sanal ortam, 'Scripts' klasörü etkinleştirilerek 'source' komutuyla etkinleştirilir.
    Steps to Create a Virtual Environment
    Sanal ortamınızı başarıyla etkinleştirdiyseniz, parantez içinde 'env' görünecektir.

  5. Django’nun Kurulması: Belirli sanal ortamınıza Django kurmak için 'pip install django' kullanabilirsiniz.
    Steps to Create a Virtual Environment

Not: Linux ve Mac kullanıcıları komutta özellikle 'python3' kullanmalıdır çünkü bilgisayarlarında Python 2 sürümü önceden yüklüdür. Ayrıca, 2020 yılından sonra Python 2 artık desteklenmediği için günümüzde 3. sürümü kullanmak tercih edilir.

Bir Django Projesi Oluşturma

  1. İlk adım, 'django-admin startproject project_name' komutunu kullanarak projenizi oluşturmaktır; sizin durumunuzda 'project_name' 'django_blog' olacaktır. Ayrıca bu işlem, yeni oluşturduğumuz projenin içinde bir dizi dosya oluşturur; gerekirse Django dokümantasyonunda bunları daha detaylı inceleyebilirsiniz.
    Creating a Django Project
  2. 'cd' komutunu kullanarak yeni oluşturulan proje dizinine geçin ve 'ls' komutuyla oluşturulan dosyaları görüntüleyin.
    Creating a Django Project
  3. Projenizi 'python manage.py runserver' komutuyla çalıştırabilirsiniz.
    Creating a Django Project
  4. Projeyi favori tarayıcınızda (Google Chrome, Mozilla Firefox vb.) görüntüleyebilirsiniz. Tarayıcınıza gelip URL çubuğuna 'localhost:8000' veya '127.0.0.1:8000' yazın.
    Creating a Django Project
    Not: Yukarıdaki sayfayı görebilmek için bash üzerinde sunucunun arka planda çalışıyor olması gerekir. Ayrıca, gerekirse Windows/Linux’ta 'Ctr+C' ve Mac’te 'Cmd+C' ile sunucuyu manuel olarak durdurabilirsiniz.

Yeni Django Projesine Başlama

Django’da yeni bir proje oluşturmak her zaman aşağıda gösterildiği gibi iki adımdan oluşur.

  1. İlk adım, 'python manage.py startapp app_name' komutunu kullanarak bir uygulama oluşturmaktır; sizin durumunuzda app_name 'blog' olacaktır. Django’da tek bir projede birden fazla uygulama bulunabilir ve her uygulama projeye tekil ve belirli bir işlev kazandırır.
    Starting the New Project
  2. İkinci adımda, 'django_blog/settings.py' dosyasındaki INSTALLED_APP bölümünde değişiklik yaparak projemize yeni oluşturulan uygulamamızı tanıtırız.
    Starting the New Project

Modellerimizde Değişiklik Yapma

Django, varsayılan veritabanı olarak 'SQLite' kullanır; bu hafif bir veritabanıdır ve küçük projelerde kullanılır; bu proje için uygundur. Veritabanıyla çalışmayı oldukça kolaylaştıran 'Object Relational Mapper (ORM)' kullanır. Doğrudan veritabanı kodu yazılmaz; veritabanı tabloları 'models.py' içinde 'class' anahtar sözcüğü yardımıyla oluşturulur.

'blog/models.py' içinde 'Post' adlı yeni bir model oluşturmanız gerekir. Bu sınıf, daha sonra bir veritabanı tablosuna dönüşecek ve şu anda 'models.Model'den kalıtım alacaktır. Standart bir blogda olduğu gibi, belirli bir 'Post' bir başlık içerir; bu alan CharField olacaktır. Bu, metin tabanlı bir sütundur ve zorunlu 'max_length' argümanını kabul eder; sizin durumunuzda bu değer 50’dir. Ayrıca 'content' adlı bir başka alan daha vardır; bu, standart bir blogda 'Post'un ayrıntı metnini içeren TextField’tır. Çift alt çizgili ('str') yöntem tanımlanmıştır; bu, 'title' alanını geçersiz kılar ve bazı nesneler yerine başlığın gerçek adını döndürür.
Changing in our Models

Migration Oluşturma

'python manage.py makemigrations', 'models.py' oluşturulduktan sonra onu okuyan ilk adımdır. 'migrations' adlı yeni bir klasör oluşturur ve içinde veritabanları arasında taşınabilir '0001_initial.py' adlı bir dosya yer alır.
Changing in our Models

Veritabanına Migration Uygulama

Bu ikinci adımda 'python manage.py migrate' komutu yeni oluşturulan 'migrations' klasörünü okur, veritabanını oluşturur ve modelde bir değişiklik olduğunda veritabanını geliştirir.
Changing in our Models

Yönetime Kayıt

'blog/admin.py' dosyasına geçelim ve 'from .models import Post' ile 'Post' adlı modeli içe aktaralım. Modelleri yönetime kaydetmek için komut 'admin.site.register(Post)' şeklindedir.


Changing in our Models

Süper Kullanıcı Oluşturma ve Yönetim Panelinde Görüntüleme

'admin' paneline erişmeden önce bir Süper Kullanıcı oluşturmanız gerekir. Bunun için 'winpty python manage.py createsuperuser' komutunu kullanın.
Changing in our Models
Not: winpty, Windows Konsol Programlarıyla iletişim kurmak için bash’e özgü bir komuttur.

Sunucunuzu bash üzerinde arka planda python manage.py runserver komutuyla çalıştırın. Tarayıcıya gidip URL çubuğuna aşağıdakileri yazın.

Ardından daha önce oluşturduğunuz kullanıcı adı ve şifre bilgilerini girin:
Changing in our Models
Ardından yönetim panelinizi, yeni oluşturduğumuz 'Post' modeliyle birlikte görüntüleyin.
Changing in our Models
'Ekle' düğmesine tıklayarak 'Post' içeriğini değiştirin. Bilgileri doldurup ayrıntıları 'Kaydet' ile kaydedin.
Changing in our Models

Görünümler ve URL’lerde Değişiklik

'blog/views.py' dosyasına gidin ve aşağıda gösterildiği gibi değişiklikleri yapın. İsteği alan 'blog_list' fonksiyonunu ekleyin. 'Post.objects.all()' kullanılarak oluşturulan tüm nesneleri alan bir sorgu yapılır ve post değişkenine kaydedilir. 'context' adlı yeni bir sözlük oluşturulur; burada nesne bir anahtar olarak aktarılır ve şablonda 'blog-list.html' üzerinden alınır; bu da render yardımıyla yanıt döndürülerek gerçekleştirilir.
Changing in views and urls
'django_blog/blog' içinde 'urls.py' adlı yeni bir dosya oluşturun ve aşağıdaki değişiklikleri ekleyin. 'blog_list' görünümüne göreli bir içe aktarma vardır; ayrıca bir 'urlpatterns' bulunur; bu, web sitesinde belirli bir sayfaya giden yolların listesidir. Şu anda b’path boş bir dize ve görünümün adını içerir.
Changing in views and urls
'django_blog/urls.py' dosyasına geçip include’u içe aktaralım ve 'urlpatterns' üzerinde değişiklik yapalım. Ardından uygulamanızın URL’lerine include ile yolu ekleyin. Ayrıca, kullanıcılar 'posts/' üzerinden yönlendirildiğinde 'blog.urls'’e gider.

Şablonları Oluşturma ve Değiştirme

Genellikle 'HTML' dosyalarını barındıran ve kendi şablonlama diline sahip olan 'Jinja2' ile çalışan bir templates klasörü oluşturalım. Klasörün adı, gelenek gereği 'templates/blog/blog_list.html' olmalıdır.
Making and Changing the Templates
Aşağıda 'HyperTextMarkup Language(HTML) ile ilgili sözdizimini görebilirsiniz; 'h1' büyük başlık için ve sırasız liste (ul) ile liste öğesi li kullanılmıştır. Ayrıca, 'Jinja 2' ile ilgili 'for' döngüsü sözdizimi kullanılmıştır; burada 'blog_list' adlı nesne 'blog/views.py'’den bir anahtar olarak geçirilmiş ve 'list' adı verilen her öğe üzerinde yinelenmiştir.
Making and Changing the Templates
Web sayfasında 'İlk Gönderi' başlıklı 'title'ı görüntüleyin.
Making and Changing the Templates
Yönetim panelinden yukarıdakiyle aynı şekilde bir bilgi daha ekleyelim ve ikinci gönderinizin title’ını 'İkinci Gönderi' olarak adlandırın.
Making and Changing the Templates
Bilgileri ekledikten ve ana sayfayı yeniledikten sonra bilgiler güncellenecektir.
Making and Changing the Templates

Her Bir Gönderi İçin Ayrıntılar

Her bir gönderi başlığı ve içeriğiyle ilgili bilgilerin bulunduğu ayrı sayfalar oluşturacaksınız. 'url' "localhost:8000/posts/'id'" şeklinde olacaktır; burada id, Django tarafından her 'Post'a verilen benzersiz numarayı ya da birincil anahtarı ifade eder.
'blog/view.py' içinde 'blog_detail' adında ve parametre olarak id kabul eden bir fonksiyon oluşturalım. Ayrıca yalnızca belirli id’yi almak için bir sorgu yapılır ve 'each_post' içine kaydedilir. Yukarıdakine benzer şekilde ihtiyaç duyulan bilgi 'blog_detail.html'’e context olarak aktarılır.
Details for Each Individual post
'blog/urls.py' içindeki url, yolun '<id>' içerdiği ve benzersiz id’yi tamsayı biçiminde kabul ettiği şekilde değiştirilir. Varsayalım ki kullanıcı yalnızca 'posts/' adresine gelirse tüm gönderileri görür; ancak 'posts/1' adresine geldiğinde yalnızca ilk oluşturulan gönderiye ait bilgileri görür.
Details for Each Individual post
'blog/blog_detail.html' adlı yeni bir dosya oluşturalım ve aşağıdaki değişiklikleri yapalım. blog_detail context olarak geçirildiğinden, 'title' ve 'content' nokta gösterimiyle erişilebilir.
Details for Each Individual post
Tarayıcınızın URL’ine gidip aynı şekilde yazarak tekil gönderileri görüntüleyin. İlk oluşturulan bilginin 'id'si '1', ikincisinin '2' ve yeni oluşturulanlar için bu şekilde artar.
Details for Each Individual post

Gönderiyi Silme

İsteği ve id’yi alan blog_delete fonksiyonunu tanımlayalım. Ayrıca, 'Post.objects.get(id=id)' ile benzersiz id’ye sahip nesneyi alan ve each_post değişkenine kaydeden bir sorgu yapılır. Ardından 'Post'u silmek için 'each_post.delete()' çağrılır. Son olarak, 'django.http' modülünden HttpResponseRedirect içe aktarılır ve sayfayı '/posts/' adresine yönlendirmek için kullanılır.
Deleting the Post
. 'urls.py' içinde 'blog_delete' içe aktarılır ve yol, sonunda delete bulunan id’nin ilgili nesneyi ya da bilgiyi kaldıracağı şekilde '<id>/delete' olarak ayarlanır.
Deleting the Post
Gönderimizi, 'urls.py' içinde aşağıdakini yazarak silelim.
Deleting the Post
Son olarak, ana sayfada yalnızca bir gönderi varken 'posts/1/delete/' çağrıldığında sayfa '/posts' adresine yönlendirilir.
Deleting the Post

Sonuç

Tebrikler, eğitimi tamamladınız! Django Web Geliştirme’nin temellerini ve CRUD işlevselliğini öğrendiniz. Ayrıca, belirli bir konu hakkında daha fazla ayrıntı için Django Dokümantasyonuna göz atın.

Kaynaklar:

Python ile Django Web Geliştirme SSS

Django nedir?

Django, model-template-view mimari desenini takip eden, Python ile yazılmış ücretsiz ve açık kaynaklı bir web çatısıdır. Geliştiricilerin uygulamaları mümkün olan en hızlı şekilde fikirden canlıya taşımalarına yardımcı olacak şekilde tasarlanmıştır.

Django’nun bazı özellikleri nelerdir?

Django’nun bazı özellikleri arasında hafif ve modüler bir tasarım, veritabanı etkileşimlerini basitleştiren güçlü bir ORM (Object-Relational Mapper) ve kullanıcı kimlik doğrulama ve yönetimi, form işleme ve içerik yönetimi gibi yaygın web geliştirme görevleri için yerleşik destek bulunur.

Django’ya nasıl başlarım?

Django ile başlamanız için makinenize Python ve Django kütüphanesini kurmanız gerekir. Ardından django-admin startproject komutunu kullanarak yeni bir Django projesi oluşturabilir ve Django’nun yerleşik özellikleri ve araçlarını kullanarak uygulamanızı geliştirmeye başlayabilirsiniz.

Django’da nasıl veritabanı oluştururum?

Django varsayılan olarak, Python ile birlikte gelen SQLite veritabanı motorunu kullanır. Django uygulamanızda modeller tanımlayıp migrate komutunu çalıştırarak yeni bir veritabanı oluşturabilirsiniz. Bu işlem, modellerinizin verilerini saklamak için gerekli tabloları veritabanında oluşturur.

Django’da görünüm ve şablonları nasıl oluştururum?

Django’da görünümler, HTTP isteklerini işleyen ve HTTP yanıtları döndüren fonksiyonlardır. Uygulamanızda, bir istek alan ve bir yanıt döndüren fonksiyonlar tanımlayarak görünümler oluşturabilirsiniz. Şablonlar, dinamik içerik için yer tutucular içeren HTML dosyalarıdır. Dinamik içeriği şablonlara yerleştirmek ve görünümlerinizde render etmek için Django’nun şablon dilini kullanabilirsiniz.

Bir Django uygulamasını nasıl dağıtırım?

Barındırma ihtiyaçlarınıza ve tercihlerinize bağlı olarak bir Django uygulamasını dağıtmanın çeşitli yolları vardır. Yaygın seçenekler arasında Heroku veya AWS gibi bir bulut platformuna dağıtım, Apache veya Nginx gibi bir web sunucusunun kullanılması ya da PythonAnywhere veya DigitalOcean gibi bir barındırma hizmetinden yararlanmak bulunur.

Konular
Python

Python Kursları

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör