Django 3D logosu yanında iki Django MVC modül bloğu bembeyaz arka planda premium kompozisyon

Django eğitimi, framework'ün "batteries-included" verimliliğini gerçek ürün ölçeğine taşıyan bir programdır. ORM ile N+1 problemini select_related ve prefetch_related ile keseme, Class-based view ve generic view arasında senaryoya göre seçim somut örneklerle işlenir. Django REST Framework ile serializer ve viewset tasarımı bel kemiğidir.

Eğitim sonunda katılımcı, Authentication, permission ve throttling katmanını hazır sistemden çıkarır; Celery ile background task ve periodic schedule kurar; Channels ile WebSocket ve async view geliştirir. Django Admin'i custom action ve list_filter ile genişletmek de eğitimin pratik kazanımıdır. Eğitim materyalleri Django dokümantasyonu ile uyumlu hazırlanmıştır.

Katılımcı Profili

Bu eğitim, Django'nun batteries-included verimliliğini ürüne çevirmek isteyen rollere yöneliktir:

  • Python Geliştiriciler: Django ile hızlı web servisi yazan mühendisler
  • Backend Mühendisleri: REST API ve admin paneli geliştiren roller
  • Full-stack Geliştiriciler: Django Templates veya Django + React ile uçtan uca yazanlar
  • API Geliştiricileri: Django REST Framework ile serializer/viewset kuran ekipler
  • Startup Geliştiricileri: MVP'yi hızla ayağa kaldıran mühendisler

Ön Gereklilikler

Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:

  • Python temellerinde rahatlık (function, class, decorator)
  • HTTP, REST API ve JSON kavramlarına aşinalık
  • SQL ile temel sorgulama (SELECT, JOIN, WHERE) deneyimi
  • HTML, CSS ve template syntax'a giriş düzeyi bilgi
  • Git ile temel sürüm kontrol akışı

Süresi ve Tarihi

Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Bu eğitimi tamamlayan katılımcı, Django'nun "batteries-included" yaklaşımını ürün hızına çevirir:

  • Django ORM'i model tabanlı kullanır, N+1'i select_related ve prefetch_related ile keser
  • Class-based view ile generic view arasında senaryoya göre seçim yapar
  • Django REST Framework ile serializer ve viewset tasarlar
  • Authentication, permission ve throttling katmanını hazır sistemden çıkarır
  • Django Admin'i custom action ve list_filter ile genişletir
  • Celery ile background task ve periodic schedule kurar
  • Channels ile WebSocket ve async view geliştirir

Django Eğitimi Konuları

1. Django Felsefesi - Batteries Included

  • DRY (Don't Repeat Yourself) ve Convention over Configuration
  • "Pinax" ve hızlı prototip kültürü
  • Flask, FastAPI ile karşılaştırma
  • Monolithic ve modular monolith yaklaşımı

2. Proje, App ve Yapı

  • django-admin startproject ve startapp komutları
  • settings.py, urls.py, wsgi.py, asgi.py rolü
  • App ayrımı: domain bazlı sınırlar
  • Reusable app ve PyPI yayını

3. URL Routing ve View

  • urlpatterns ve path() / re_path() farkı
  • Function-based view (FBV) yapısı
  • URL namespace ve include()
  • URL parametre çıkarma ve converter

4. Template Engine ve Inheritance

  • Django Template Language (DTL)
  • extends, block, include ile inheritance
  • Template filter ve custom filter yazımı
  • Context processor ile global değişken
  • Jinja2 alternatifi ve karşılaştırma

5. Django ORM - Model ve QuerySet

  • Model field tipleri ve ilişkiler
  • QuerySet API: filter, exclude, order_by, annotate
  • F() ve Q() ifadeleri
  • select_related ve prefetch_related N+1 önleme
  • Manager ve QuerySet özelleştirme

6. Migrations ve Schema Evolution

  • makemigrations ve migrate komutları
  • Migration squashing ve düzenleme
  • RunPython ve data migration
  • Zero-downtime migration stratejisi
  • Multiple database routing

7. Forms ve ModelForms

  • Form ve ModelForm sınıfları
  • Field, widget ve clean() method
  • Formset ve InlineFormset
  • Dosya yükleme: ImageField, FileField
  • Crispy Forms ile UI iyileştirme

8. Authentication ve User Model

  • Default User modeli ve customization
  • AbstractUser ve AbstractBaseUser
  • Login, logout, password change view'ları
  • Social auth (allauth) entegrasyonu
  • Two-factor authentication temelleri

9. Authorization - Permissions ve Groups

  • Permission framework: add, change, delete, view
  • Group bazlı yetkilendirme
  • Object-level permission (django-guardian)
  • Decorator: @login_required, @permission_required
  • Mixin: LoginRequiredMixin, PermissionRequiredMixin

10. Admin Panel - Built-in Backoffice

  • ModelAdmin ile özelleştirme
  • list_display, list_filter, search_fields
  • Inline ile ilişkili model yönetimi
  • Admin action ve bulk operasyon
  • Django Unfold ve modern tema alternatifleri

11. Middleware ve Request Pipeline

  • Middleware sırası ve process_request/response
  • Built-in: SecurityMiddleware, AuthenticationMiddleware
  • Custom middleware yazımı
  • Async middleware desteği

12. Django REST Framework (DRF)

  • DRF kurulumu ve genel yaklaşımı
  • APIView, GenericAPIView, ViewSet hiyerarşisi
  • Router ile URL otomasyonu
  • Throttling ve rate limiting
  • OpenAPI/Swagger entegrasyonu (drf-spectacular)

13. Serializer ve Validation

  • Serializer vs ModelSerializer
  • Nested serializer ve writable nested
  • Custom validate() ve to_representation()
  • SerializerMethodField kullanımı
  • Bulk operation ve performans

14. Class-Based Views ve Generic Views

  • CBV vs FBV ne zaman seçilir
  • ListView, DetailView, CreateView, UpdateView, DeleteView
  • Mixin'lerle davranış kompozisyonu
  • get_queryset, get_context_data override

15. Signal Framework

  • pre_save, post_save, m2m_changed sinyalleri
  • Custom signal tanımı
  • Signal handler'ların yan etkileri
  • Signal kullanmamayı tercih etme zamanı

16. Caching - Backend ve Decorator

  • Cache backend: Memcached, Redis, Database, FileBased
  • Per-site, per-view, template fragment cache
  • cache_page ve cache_control decorator
  • Low-level cache API

17. Celery ile Background Task

  • Task queue mantığı ve broker (Redis, RabbitMQ)
  • @shared_task ile task tanımı
  • Periodic task ve Celery Beat
  • Result backend ve durum takibi
  • Django-Q, Huey, RQ alternatifleri

18. Testing - TestCase ve Client

  • TestCase ve transactional rollback
  • Client ile request simülasyonu
  • Fixture vs factory_boy
  • pytest-django ile pytest entegrasyonu
  • Coverage ve mutation testing

19. Security - CSRF, XSS, SQL Injection

  • CSRF token ve middleware
  • XSS koruması: autoescape
  • SQL injection: ORM ile otomatik parametrize
  • Content Security Policy (CSP)
  • SECURE_SSL_REDIRECT ve HSTS

20. Deployment - WSGI, ASGI, Gunicorn

  • WSGI ve ASGI farkı
  • Gunicorn, Uvicorn, Daphne sunucuları
  • Nginx reverse proxy yapılandırması
  • Static ve media file servisi (Whitenoise, S3)
  • Docker ile Django dağıtımı

DJANGO EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları


Django ORM N+1 problemini nasıl önler?

select_related foreign key'ler için JOIN ile tek query üretir. prefetch_related many-to-many veya reverse relation'da ayrı query atar ama Python tarafında birleştirir. Django Debug Toolbar query sayısını gösterir; only ve defer ile gereksiz kolonları engellemek de performansı belirgin artırır.

Class-based view ile function-based view arasında karar?

CBV mixin'ler ve generic view'lar ile (ListView, DetailView, FormView) boilerplate'i kısaltır — CRUD ekranları hızla yazılır. FBV daha açık ve okunabilir, custom logic için ayrıştırma kolay. Karmaşık iş kuralı varsa FBV, standart CRUD için CBV tercih edilir.

Django REST Framework serializer ve viewset nasıl tasarlanır?

Serializer modeli JSON'a dönüştürür ve validation yapar; ModelSerializer çoğu CRUD için yeterli. ViewSet ise REST endpoint'leri (list, retrieve, create, update, destroy) tek class'ta gruplar. Router viewset'ten URL'leri otomatik üretir — minimal kod ile tam REST API çıkar.

Celery ile background task nasıl kurulur?

Celery broker (Redis veya RabbitMQ) üzerinden task'i kuyruğa alır, worker process'i tüketir. @shared_task decorator ile task tanımlanır; task.delay() ile async tetiklenir. Periodic task için Celery Beat scheduler kullanılır. Sentry entegrasyonu task hatalarını otomatik raporlar.

Django Channels ile WebSocket nasıl entegre edilir?

Channels Django'yu ASGI ile genişletir; HTTP yanında WebSocket, long polling ve background protokolleri destekler. Consumer class'ı (AsyncWebsocketConsumer) bağlantı, mesaj ve disconnect olaylarını yönetir. Channel layer (Redis) ile çoklu instance arasında mesaj broadcast yapılır.

Django Admin custom action ve filter ile nasıl genişletilir?

ModelAdmin sınıfında list_display, list_filter ve search_fields kolaylıkla eklenir. actions = ['custom_action'] ile toplu işlem (örn. seçili kullanıcıları aktive et) tanımlanır. list_filter custom class ile özel sorgu filtreleri yazılır. inlines ile ilişkili model aynı sayfada düzenlenir.