Django Rehberi: Yüksek Performanslı Web Uygulamaları Geliştirme
Yazar: Burak Balkı | Kategori: Performance | Okuma Süresi: 10 dk
Django framework'ü ile yüksek performanslı ve güvenli web uygulamaları geliştirmek için kapsamlı başlangıç rehberi. Kurulum, ORM, MTV mimarisi ve optimizasyo...
## Django Nedir ve Neden Tercih Edilmelidir?
**Django**, Python programlama dili ile yazılmış, yüksek seviyeli ve açık kaynaklı bir web framework'üdür. "Batteries-included" (piller dahil) felsefesini benimseyen bu yapı, bir web uygulamasının ihtiyaç duyabileceği kimlik doğrulama, veritabanı yönetimi ve yönetim paneli gibi birçok özelliği standart olarak sunar. Django, özellikle hızlı geliştirme (rapid development) ve temiz tasarım süreçleri için optimize edilmiştir.
Kurumsal projelerde Django'nun tercih edilme nedenleri arasında güvenlik, ölçeklenebilirlik ve devasa topluluk desteği yer alır. SQL injection, cross-site scripting (XSS) ve cross-site request forgery (CSRF) gibi yaygın web açıklarına karşı yerleşik koruma sağlar. Bu rehberde, Django'nun temellerinden başlayarak performans odaklı bir mimariyi nasıl inşa edeceğinizi inceleyeceğiz.
## Django Mimari Yapısı: MTV (Model-Template-View)
Django, geleneksel MVC (Model-View-Controller) mimarisinin bir varyasyonu olan **MTV (Model-Template-View)** yapısını kullanır. Bu yapı, sorumlulukların ayrıştırılmasını sağlayarak kodun sürdürülebilirliğini artırır.
- **Model:** Veri yapısını ve veritabanı ilişkilerini tanımlar. Django ORM aracılığıyla SQL yazmadan veritabanı işlemlerini yönetmenizi sağlar.
- **Template:** Kullanıcıya sunulacak olan arayüz katmanıdır. HTML dosyalarını dinamik verilerle birleştirir.
- **View:** İş mantığının (business logic) bulunduğu katmandır. Modelden veriyi alır, işler ve uygun Template'e gönderir.
## Geliştirme Ortamının Hazırlanması ve Kurulum
Başarılı bir Django projesi için izole edilmiş bir geliştirme ortamı oluşturmak kritiktir. Python'un `venv` modülü kullanılarak her proje için bağımsız bağımlılık yönetimi sağlanmalıdır.
```bash
# Sanal ortam oluşturma
python -m venv venv
# Sanal ortamı aktif etme (Windows)
venv\Scripts\activate
# Sanal ortamı aktif etme (Linux/Mac)
source venv/bin/activate
# Django kurulumu
pip install django
```
Kurulum tamamlandıktan sonra Django versiyonunu kontrol ederek işlemin doğruluğunu teyit edebilirsiniz:
```bash
python -m django --version
```
## İlk Django Projesinin Oluşturulması ve Yapılandırılması
Django'da hiyerarşi **Project** (Proje) ve **App** (Uygulama) üzerine kuruludur. Bir proje, birden fazla uygulamayı barındıran genel çatıdır.
```bash
# Proje oluşturma
django-admin startproject my_enterprise_project .
# Uygulama oluşturma
python manage.py startapp core_app
```
Proje dizininde bulunan `settings.py` dosyası, uygulamanın kalbidir. Veritabanı bağlantıları, dil seçenekleri ve yüklü uygulamalar buradan yönetilir. Yeni oluşturulan uygulamanın `INSTALLED_APPS` listesine eklenmesi gerekir.
## Veritabanı Modelleri ve ORM (Object-Relational Mapping)
Django'nun en güçlü yanlarından biri olan **ORM**, karmaşık SQL sorguları yerine Python sınıfları ile veritabanı şemasını tanımlamanıza olanak tanır. Bu, hem geliştirme hızını artırır hem de veritabanı bağımsızlığı sağlar.
```python
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Product(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
price = models.DecimalField(max_digits=10, decimal_places=2)
is_active = models.BooleanField(default=True)
class Meta:
indexes = [
models.Index(fields=['title']),
]
```
Modeller tanımlandıktan sonra veritabanı tablolarını oluşturmak için migrasyon işlemleri gerçekleştirilir:
```bash
python manage.py makemigrations
python manage.py migrate
```
## Django View ve URL Yönlendirme Mekanizması
View'lar, istemciden gelen HTTP isteklerini karşılar ve bir HTTP yanıtı döner. Django'da hem fonksiyon tabanlı (FBV) hem de sınıf tabanlı (CBV) view yapıları mevcuttur.
```python
from django.shortcuts import render, get_object_or_404
from .models import Product
def product_detail(request, pk):
product = get_object_or_404(Product, pk=pk)
return render(request, 'products/detail.html', {'product': product})
```
URL yapılandırması `urls.py` dosyasında gerçekleştirilir:
```python
from django.urls import path
from .views import product_detail
urlpatterns = [
path('product//', product_detail, name='product_detail'),
]
```
## Şablon Sistemi (Templates) ve Statik Dosya Yönetimi
Django Template Language (DTL), Python benzeri bir sözdizimi ile HTML dosyaları içerisinde mantıksal işlemler yapmanıza olanak tanır.
```html
{% block title %}Kurumsal Proje{% endblock %}
{% block content %}{% endblock %}
{% extends "base.html" %}
{% block content %}
-
{% for product in products %}
- {{ product.title }} - {{ product.price }} TL {% endfor %}