Python Django’ da Alternatif 404 Sayfası Oluşturma

Django ile bir web uygulaması geliştirdiğimizde, kullanıcı mevcut olmayan bir url adresine girmek isteyebilir. Bu durumda Django kullanıcının karşısına şık olmayan standart bir 404 sayfası çıkaracaktır. Bunun yerine Django da alternatif bir 404 sayfası oluşturabiliriz.

Aşağıdaki adımları takip ederek alternatif 404 sayfası nasıl oluşturulacağını öğrenebilirsiniz.

1. Adım

Oluşturduğumuz 404 sayfasını görmek için settings.py’ de

DEBUG = False

yapmak gerekiyor.

2. Adım

Daha sonra alternatif 404.html sayfası oluşturmamız gerekiyor. Bu oluşturduğumuz templatelerimizin olduğu klasöre taşıyoruz.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'),],  # Templates yolu
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3. Adım

django.urls fonksiyonlarının içinde önceden tanımlı handler metodları var. Bunu değiştirmek için urls.py dosyamıza;

from django.urls import path
from main.views import *

handler404 = 'main.views.handler404'  #urls.py dosyasına eklenecek kısım

app_name = "main"

urlpatterns = [
    path('', home, name="home"),

ekliyoruz. Bu şekilde çalışacak handler404 fonksiyonu ile mevcut olan handler404 fonksiyonunu eziyoruz.

4. Adım

main appimizin içinde bulunan views.py dosymızda handler404 fonksiyonumuzu tanımlıyoruz.

# 404 PAGE 
def handler404(request, exception=None):
    return render(request, 'auth/404.html')

Aşağıdaki resimde main appimizde bulunan views.py dosyasının konumu ile 404.html sayfamızın bulunduğu templatelerimizin dosya yapısını görebilirsiniz.

Bu adımları bitirdikten sonra browserdan uygulamanızda olmayan bir url girerek 404 sayfasını görüntüleyebilirsiniz.