Django Request–Response Mantığı

Django'nun kalbi, HTTP isteklerini (Request) alıp, işleyip, geriye bir cevap (Response) döndürme sürecinde atar. Bu süreci tam olarak anlamak, framework'e tamamen hakim olmanızı sağlar.

Web geliştirmede her şey tek bir temel prensibe dayanır: Bir istemci (tarayıcı) bir şey ister (Request) ve sunucu buna bir karşılık verir (Response). Django, bu süreci soyutlayarak geliştiriciler için güvenli, hızlı ve yönetilebilir bir yapı sunar.


Web Uygulamalarında İstek–Yanıt Döngüsü 

  • HTTP Request & Response nedir?

  • Django’da bir isteğin sistemden nasıl geçtiği

  • HttpRequest nesnesi

  • GET, POST, URL parametreleri

  • HttpResponse türleri

  • JSON response

  • Redirect & 404/403/500 cevapları

  • Middleware ile request–response kontrolü

  • Gerçek hayat örnekleri


🌍 1. Request & Response Nedir?

Bir web uygulamasında her şey istek (request) ile başlar ve yanıt (response) ile biter.

📌 Örnek:

  • Tarayıcı: https://site.com/loginrequest

  • Sunucu: HTML sayfası döner → response

Kullanıcı → Request → Django → Response → Kullanıcı

🔁 2. Django Request–Response Akışı

Django’da istek şu sırayla ilerler:

  1. Tarayıcı HTTP isteği gönderir

  2. urls.py isteği yakalar

  3. İlgili view çalışır

  4. View bir HttpResponse döndürür

  5. Django cevabı tarayıcıya gönderir

📊 Akış Diyagramı:

Browser
   ↓
urls.py
   ↓
views.py
   ↓
HttpResponse
   ↓
Browser

📦 3. HttpRequest Nedir?

Her view fonksiyonuna Django otomatik olarak request nesnesini gönderir.

def home(request):
    return HttpResponse("Merhaba Django")

Buradaki request:
👉 django.http.HttpRequest sınıfından bir nesnedir.


🔍 4. Request İçeriğini İncelemek

📌 request.method

İsteğin türünü verir.

request.method
MethodAnlamı
GET    Veri almak
POST    Veri göndermek
PUT    Güncellemek
DELETE    Silmek

📌 request.GET (Query String)

URL:

/search?q=django&page=2
q = request.GET.get("q")
page = request.GET.get("page")

📎 request.GETdictionary gibi çalışır


📌 request.POST (Form Verileri)

HTML Form:

<form method="post">
  <input name="username">
</form>
username = request.POST.get("username")

⚠️ POST verileri sadece POST isteğinde gelir.


📌 request.FILES (Dosya Yükleme)

file = request.FILES["photo"]

Dosya upload işlemlerinde kullanılır.


📌 request.headers

request.headers["User-Agent"]

Tarayıcı bilgisi, token, vs.


📤 5. HttpResponse Nedir?

Django’da view fonksiyonları mutlaka bir response döndürmelidir.

📌 Basit Response

from django.http import HttpResponse

return HttpResponse("Merhaba")

📌 HTML Döndürme

return HttpResponse("<h1>Hoş Geldiniz</h1>")

Ama genelde template kullanılır 👇


📌 render() ile Template Response

from django.shortcuts import render

def home(request):
    return render(request, "home.html")

✔️ HTML
✔️ Context (veri)
✔️ Response

Hepsi birlikte 👍


📊 6. JSON Response (API’ler İçin)

from django.http import JsonResponse

def api(request):
    data = {
        "status": "ok",
        "message": "Merhaba API"
    }
    return JsonResponse(data)

📌 REST API’lerin temelidir.


🔀 7. Redirect Response

Bir sayfadan başka bir sayfaya yönlendirme:

from django.shortcuts import redirect

return redirect("login")

veya

return redirect("/login/")

🚫 8. Hata Response’ları

❌ 404 – Sayfa Yok

from django.http import Http404

raise Http404("Sayfa bulunamadı")

🔐 403 – Yetkisiz

from django.http import HttpResponseForbidden

return HttpResponseForbidden("Erişim yasak")

9. Middleware ile Request & Response

Middleware, request gelmeden önce ve response gitmeden sonra çalışır.

📌 Kullanım Alanları:

  • Giriş kontrolü

  • Loglama

  • Güvenlik

  • Dil seçimi

Basit Middleware Örneği:

class SimpleMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        print("Request geldi")

        response = self.get_response(request)

        print("Response gidiyor")
        return response

🧪 10. Gerçek Hayat Senaryosu

📌 Login Örneği

def login_view(request):
    if request.method == "POST":
        username = request.POST.get("username")
        return HttpResponse(f"Hoş geldin {username}")

    return render(request, "login.html")

✔️ GET → Form göster
✔️ POST → Veri işle


🧩 11. Request–Response Mantığını Anlayan Ne Kazanır?

✅ Django’yu gerçekten kavrar
✅ API geliştirebilir
✅ Hata ayıklaması kolaylaşır
✅ Middleware & güvenlik öğrenir
✅ Full-stack düşünmeye başlar


🔚 Sonuç

Django’nun kalbi:

Request gelir → View işler → Response gider

Bu döngüyü çözen biri Django’nun %60’ını çözmüş demektir 💪




🌐 Request & Response Teknolojisi Nedir?

Request & Response, web’in temel çalışma prensibidir.
İnternette gördüğün her sayfa, her buton, her form bu teknolojiyle çalışır.

Kısaca:

Kullanıcı ister → Sunucu cevap verir


Günlük Hayattan Örnek

Bir lokantadasın 🍽️

  • Request (İstek):
    Garsona “Bir çorba alabilir miyim?” dersin.

  • Response (Yanıt):
    Garson çorbayı getirir.

Web’de de aynı şey olur:

  • Tarayıcı ister

  • Sunucu cevap verir


🔁 Teknik Akış (Web Dünyası)

Kullanıcı (Tarayıcı)
        ↓  Request
      Sunucu
        ↓  Response
Kullanıcı (Tarayıcı)

Bu döngü saniyenin çok küçük bir bölümünde olur.


📥 Request (İstek) Nedir?

Request, tarayıcının sunucuya gönderdiği mesajdır.

Bir request şunları içerir:

📌 1. URL (Adres)

https://site.com/login

📌 2. HTTP Method

MethodNe yapar
GET    Veri ister
POST    Veri gönderir
PUT    Veri günceller
DELETE    Veri siler

📌 3. Headers (Başlıklar)

Tarayıcı bilgileri, dil, token vs.

Örnek:

User-Agent: Chrome
Accept-Language: tr

📌 4. Body (Gövde – Opsiyonel)

Form verileri, JSON, dosya vb.

{
  "username": "ali",
  "password": "1234"
}

📤 Response (Yanıt) Nedir?

Response, sunucunun tarayıcıya verdiği cevaptır.

Response içinde şunlar vardır:

📌 1. Status Code (Durum Kodu)

KodAnlamı
200    Başarılı
301    Yönlendirme
403    Yetkisiz
404    Bulunamadı
500    Sunucu Hatası

📌 2. Headers

Tarayıcıya bilgi verir.

Content-Type: text/html

📌 3. Body (Asıl İçerik)

HTML, JSON, dosya, resim vb.

<h1>Hoş geldin</h1>

⚙️ Django’da Request & Response

Django bu süreci otomatik yönetir.

def home(request):
    return HttpResponse("Merhaba")
  • request → gelen istek

  • HttpResponse → giden cevap


🔍 Django Request İçinden Ne Alırız?

AlanAçıklama
request.method    GET mi POST mu
request.GET    URL verileri
request.POST    Form verileri
request.FILES    Dosyalar
request.headers    Header bilgileri

📦 Django Response Türleri

  • HttpResponse → Düz metin / HTML

  • JsonResponse → API cevabı

  • render() → HTML template

  • redirect() → Sayfa yönlendirme


🔐 Middleware (Araya Giren Katman)

Middleware:

Request gelmeden önce ve response gitmeden sonra çalışan kapıcıdır 🚪

Kullanım alanları:

  • Giriş kontrolü

  • Güvenlik

  • Loglama

  • Dil ayarı


🎯 Neden Bu Teknoloji Çok Önemli?

Çünkü:

  • 🌍 Web bunun üstüne kurulu

  • 📱 Mobil uygulamalar API ile çalışır

  • 🔐 Güvenlik burada başlar

  • 🚀 Performans burada yönetilir

Request–Response’u anlayan biri:

Django, Flask, Laravel, Spring fark etmez — hepsini çözer.


🧩 Kafada Netleşmesi İçin Tek Cümle

Web = Request gönder, Response al

Bu kadar temel… ama bu temelin üstüne koskoca internet kurulmuş 🌐




Yorumlar

Bu blogdaki popüler yayınlar

Pardus Üzerine Django Kurulumu

Python ile Web Geliştirme: Django App Oluşturma