Django da karşılaşılan özel hataları yakalayıp istenilen adrese yönlendirmek yada hata mesajını özelleştirmek için middleware kullanabiliriz.
Middleware katmanı views.py lerde tanımlı fonksiyonlardan önce ve sonra çalışan ve tüm sayfalardaki sorgu ve işlemlerin tkaip edileceği katmandır.
Proje klasörünüzün altında herhangi bir uygulamanızın altında middleware adında bir klasör oluşturup içine hatalar.py adında bir dosya oluşturalım ve içine alttaki kodları ekleyelim.
hatalar.py
from django.conf import settings
from django.shortcuts import redirect
class HataYakala:
def __init__(self, get_response):
self.get_response = get_response # İlk seferde 1 kere çalışır
def __call__(self, request):
# sorgu öncesi çalışan alan
response = self.get_response(request)
# sorgu sonrası çalışan alan
return response
def process_exception(self, request, exception): # settings.py de DEBUG aktif edildi ise ( DEBUG = TRUE )
if settings.DEBUG:
if exception.__class__.__name__ == "AuthCanceled": # hatanın sınıf adını öğreniyoruz. Örnek olarak django_social_auth a ait bir hata
return redirect("/") # Hata yakalandığında yapılacak işlem
return None # Herhangi bir koşula denk gelinmez ise
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'social_django.middleware.SocialAuthExceptionMiddleware',
'araclar.middleware.hatalar.HataYakala',
]
Django
hakkında diğer konular