Django Nedir?: Python’un Güçlü Web Framework’ü – Kapsamlı Rehber

 

Django Nedir?: Python'un Güçlü Web Framework'ü - Kapsamlı Rehber

Django: Python’un Güçlü Web Framework’ü – Kapsamlı Rehber

Giriş

Django, Python programlama diliyle yazılmış üst düzey bir web framework’üdür. Hızlı geliştirme ve temiz, pragmatik tasarımı teşvik etmek için oluşturulmuştur. 2005 yılında geliştirilmeye başlanan Django, günümüzde dünyanın en popüler web framework’lerinden biri haline gelmiştir.

Bu kapsamlı rehberde Django’nun temel özelliklerini, avantajlarını, mimarisini ve nasıl başlayacağınızı öğreneceksiniz. Ayrıca Django’nun SEO avantajlarını ve performans optimizasyon tekniklerini de keşfedeceksiniz.

Django Nedir?

Django, “mükemmellik için gereken zamanı kısaltan” bir web framework’ü olarak tanımlanır. Python tabanlı bu framework, web geliştiricilerinin karmaşık, veritabanı destekli web sitelerini hızlı ve kolay bir şekilde oluşturmasına olanak tanır.

Django’nun Temel Özellikleri

  1. Hızlı Geliştirme: Django, geliştiricilerin uygulamaları hızlı bir şekilde prototiplemesine ve üretime geçirmesine olanak tanır.

  2. Güvenlik: SQL enjeksiyonu, siteler arası komut dosyası çalıştırma (XSS), siteler arası istek sahteciliği (CSRF) gibi yaygın güvenlik tehditlerine karşı yerleşik korumalar içerir.

  3. Ölçeklenebilirlik: En yoğun trafiğe sahip web sitelerinin bile ihtiyaçlarını karşılayacak şekilde tasarlanmıştır.

  4. Çok Yönlülük: İçerik yönetim sistemlerinden sosyal ağlara, bilimsel hesaplama platformlarına kadar her türlü web uygulamasını oluşturmak için kullanılabilir.

Django’nun Avantajları

1. Python’un Gücü

Django, Python programlama dili üzerine inşa edilmiştir. Python’un okunabilirliği, geniş standart kütüphanesi ve zengin üçüncü parti modül ekosistemi Django’yu güçlü kılar.

2. Dahili Yönetim Paneli

Django, veritabanı işlemlerini kolayca yönetmek için kullanışlı bir yönetim paneli sunar. Bu panel, temel CRUD (Create, Read, Update, Delete) işlemlerini kod yazmadan gerçekleştirmenizi sağlar.

3. ORM (Object-Relational Mapping)

Django’nun ORM’si, veritabanı işlemlerini Python nesneleriyle yapmanıza olanak tanır. Bu sayede SQL bilgisi olmadan da veritabanı işlemlerini gerçekleştirebilirsiniz.

4. URL Yönlendirme

Django’nun URL yönlendirme sistemi, temiz ve SEO dostu URL’ler oluşturmanıza yardımcı olur. Esnek URL yapılandırması sayesinde karmaşık URL desenlerini kolayca yönetebilirsiniz.

5. Şablon Sistemi

Django’nun şablon motoru, sunum katmanını uygulama mantığından ayırmanıza olanak tanır. Şablon kalıtımı, filtreler ve etiketler sayesinde tutarlı ve sürdürülebilir bir arayüz oluşturabilirsiniz.

Django Mimarisi: MTV Pattern

Django, geleneksel MVC (Model-View-Controller) modelinden biraz farklı olarak MTV (Model-Template-View) modelini kullanır.

  1. Model: Veritabanı yapısını tanımlar. Django’nun ORM’si sayesinde Python sınıfları olarak modellenir.

  2. Template: Kullanıcı arayüzünü tanımlar. HTML dosyalarıdır ve Django şablon dili ile dinamik içerik oluşturulabilir.

  3. View: İş mantığını içerir. Kullanıcıdan gelen istekleri işler ve uygun yanıtı döndürür.

Django Kurulumu

Django’yu kullanmaya başlamak için öncelikle Python’un sisteminizde yüklü olması gerekir. Python yüklüyse, Django’yu pip aracılığıyla kurabilirsiniz:

bash
Copy
pip install django

Kurulum tamamlandıktan sonra yeni bir Django projesi oluşturmak için:

bash
Copy
django-admin startproject projeadi

Proje oluşturulduktan sonra geliştirme sunucusunu başlatabilirsiniz:

bash
Copy
cd projeadi
python manage.py runserver

Bu komut, varsayılan olarak 8000 portunda bir geliştirme sunucusu başlatır. Tarayıcınızda http://127.0.0.1:8000/ adresine giderek Django’nun çalıştığını doğrulayabilirsiniz.

Django Proje Yapısı

Bir Django projesi oluşturduğunuzda, aşağıdaki dosya ve dizinler otomatik olarak oluşturulur:

  • manage.py: Proje yönetimi için komut satırı aracı

  • projeadi/: Ana proje dizini

    • __init__.py: Boş bir dosya, bu dizinin bir Python paketi olduğunu belirtir

    • settings.py: Proje ayarları ve yapılandırması

    • urls.py: URL yönlendirmeleri

    • wsgi.py: WSGI uygulama giriş noktası (dağıtım için)

Django Uygulaması Oluşturma

Django projeleri, bir veya daha fazla uygulamadan oluşur. Her uygulama belirli bir işlevselliği yerine getirir. Yeni bir uygulama oluşturmak için:

bash
Copy
python manage.py startapp uygulamaadi

Bu komut, aşağıdaki yapıya sahip bir dizin oluşturur:

  • migrations/: Veritabanı migrasyon dosyaları

  • __init__.py

  • admin.py: Yönetim paneli yapılandırması

  • apps.py: Uygulama yapılandırması

  • models.py: Veritabanı modelleri

  • tests.py: Testler

  • views.py: Görünüm fonksiyonları

Django Modelleri

Modeller, veritabanı tablolarını Python sınıfları olarak temsil eder. Django’nun ORM’si sayesinde bu sınıfları kullanarak veritabanı işlemlerini gerçekleştirebilirsiniz.

Örnek bir model tanımı:

python
Copy
from django.db import models

class Yazar(models.Model):
    ad = models.CharField(max_length=100)
    soyad = models.CharField(max_length=100)
    dogum_tarihi = models.DateField()
    biyografi = models.TextField()

    def __str__(self):
        return f"{self.ad} {self.soyad}"

class Kitap(models.Model):
    baslik = models.CharField(max_length=200)
    yazar = models.ForeignKey(Yazar, on_delete=models.CASCADE)
    yayin_tarihi = models.DateField()
    isbn = models.CharField(max_length=13)
    sayfa_sayisi = models.IntegerField()
    ozet = models.TextField()

    def __str__(self):
        return self.baslik

Modeli oluşturduktan sonra veritabanına uygulamak için:

bash
Copy
python manage.py makemigrations
python manage.py migrate

Django Admin Paneli

Django, veritabanı yönetimi için güçlü bir admin arayüzü sunar. Admin paneline erişmek için önce bir süper kullanıcı oluşturmalısınız:

bash
Copy
python manage.py createsuperuser

Ardından admin.py dosyasında modellerinizi kaydedebilirsiniz:

python
Copy
from django.contrib import admin
from .models import Yazar, Kitap

admin.site.register(Yazar)
admin.site.register(Kitap)

Admin paneline http://127.0.0.1:8000/admin/ adresinden erişebilirsiniz.

Django Görünümleri (Views)

Görünümler, kullanıcı isteklerini işleyen Python fonksiyonlarıdır. İki tür görünüm vardır: fonksiyon tabanlı görünümler ve sınıf tabanlı görünümler.

Fonksiyon tabanlı görünüm örneği:

python
Copy
from django.shortcuts import render
from .models import Kitap

def kitap_listesi(request):
    kitaplar = Kitap.objects.all()
    return render(request, 'kitaplar/liste.html', {'kitaplar': kitaplar})

Sınıf tabanlı görünüm örneği:

python
Copy
from django.views.generic import ListView
from .models import Kitap

class KitapListView(ListView):
    model = Kitap
    template_name = 'kitaplar/liste.html'
    context_object_name = 'kitaplar'

Django URL Yönlendirme

URL yönlendirme, gelen istekleri uygun görünümlere yönlendirir. Proje seviyesinde urls.py:

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

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

Uygulama seviyesinde urls.py:

python
Copy
from django.urls import path
from .views import kitap_listesi, KitapListView

urlpatterns = [
    path('', kitap_listesi, name='kitap-listesi'),
    path('sinif/', KitapListView.as_view(), name='kitap-listesi-sinif'),
]

Django Şablonları

Django şablonları, HTML dosyalarıdır ve Django şablon dili ile dinamik içerik oluşturulabilir. Şablonlar genellikle uygulamanın içindeki templates dizininde bulunur.

Örnek bir şablon (liste.html):

html
Copy
<!DOCTYPE html>
<html>
<head>
    <title>Kitap Listesi</title>
</head>
<body>
    <h1>Kitap Listesi</h1>
    <ul>
        {% for kitap in kitaplar %}
        <li>
            <a href="#">{{ kitap.baslik }}</a> - {{ kitap.yazar }}
        </li>
        {% empty %}
        <li>Henüz kitap bulunmamaktadır.</li>
        {% endfor %}
    </ul>
</body>
</html>

Run HTML

Django Formları

Django, form oluşturmayı ve işlemeyi kolaylaştıran bir form sistemi sunar. Model tabanlı formlar oluşturmak için:

python
Copy
from django import forms
from .models import Kitap

class KitapForm(forms.ModelForm):
    class Meta:
        model = Kitap
        fields = ['baslik', 'yazar', 'yayin_tarihi', 'isbn', 'sayfa_sayisi', 'ozet']

Formu görünümde kullanma:

python
Copy
from django.shortcuts import render, redirect
from .forms import KitapForm

def kitap_ekle(request):
    if request.method == 'POST':
        form = KitapForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('kitap-listesi')
    else:
        form = KitapForm()
    return render(request, 'kitaplar/ekle.html', {'form': form})

Django ve SEO

Django, SEO dostu web siteleri oluşturmak için birçok avantaj sunar:

1. Temiz URL’ler

Django’nun URL yönlendirme sistemi, arama motorları için optimize edilmiş, anlamlı ve temiz URL’ler oluşturmanıza olanak tanır.

python
Copy
path('kitaplar/<int:pk>/<slug:slug>/', views.kitap_detay, name='kitap-detay')

2. Site Haritaları

Django, otomatik site haritası oluşturmayı kolaylaştıran yerleşik bir site haritası framework’ü sunar.

python
Copy
from django.contrib.sitemaps import Sitemap
from .models import Kitap

class KitapSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.8

    def items(self):
        return Kitap.objects.all()

    def lastmod(self, obj):
        return obj.guncelleme_tarihi

3. Meta Etiketleri

Django şablonları, sayfa başlıkları ve meta açıklamaları gibi önemli SEO öğelerini kolayca yönetmenizi sağlar.

html
Copy
<head>
    <title>{% block title %}Varsayılan Başlık{% endblock %}</title>
    <meta name="description" content="{% block description %}Varsayılan açıklama{% endblock %}">
</head>

Run HTML

4. Hızlı Sayfa Yükleme

Django’nun önbellekleme mekanizmaları ve performans optimizasyon araçları, sayfa yükleme sürelerini iyileştirerek SEO puanını artırır.

5. Mobil Uyumluluk

Django’nun şablon sistemi, responsive tasarımlar oluşturmayı kolaylaştırır, bu da mobil uyumluluğu artırır.

Django Performans Optimizasyonu

1. Veritabanı Optimizasyonu

  • select_related() ve prefetch_related() kullanarak veritabanı sorgularını optimize edin

  • Sadece ihtiyaç duyulan alanları seçin (only()defer())

  • Sorguları önbelleğe alın

python
Copy
# Kötü
kitaplar = Kitap.objects.all()
for kitap in kitaplar:
    print(kitap.yazar.ad)  # Her kitap için ayrı sorgu

# İyi
kitaplar = Kitap.objects.select_related('yazar').all()
for kitap in kitaplar:
    print(kitap.yazar.ad)  # Tek sorgu

2. Önbellekleme

Django, çeşitli önbellekleme backendlarını destekler:

  • Memcached

  • Redis

  • Dosya tabanlı önbellekleme

  • Veritabanı önbellekleme

python
Copy
from django.core.cache import cache

def kitap_listesi(request):
    kitaplar = cache.get('tum_kitaplar')
    if not kitaplar:
        kitaplar = Kitap.objects.all()
        cache.set('tum_kitaplar', kitaplar, 3600)  # 1 saat önbellekte kalacak
    return render(request, 'kitaplar/liste.html', {'kitaplar': kitaplar})

3. Statik Dosyalar

  • collectstatic komutuyla statik dosyaları bir araya getirin

  • CDN kullanın

  • WhiteNoise gibi araçlarla statik dosyaları optimize edin

bash
Copy
python manage.py collectstatic

4. Middleware Optimizasyonu

Gereksiz middleware’leri kaldırarak istek/y

Review Django Nedir?: Python’un Güçlü Web Framework’ü – Kapsamlı Rehber.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir