Sitemap

Django Admin Panel1

9 min readJul 24, 2024

--

Bu yazımda django’nun en değerli özelliklerinden biri olan kolaylıkla yönetebileceğimiz Admin Panel arayüzünü kullanacağız.

Press enter or click to view image in full size
by miuul

Bir hatırlatma yapmak gerekirse projemiz içerisinde yeni bir app oluşturduğumuzda bu app’i settings.py dosyasındaki INSTALLED_APPS

listesi içerisine tanımlamamız gerekiyordu.Buradan settings.py’a giriyorum ve bahsettiğimiz liste burada:

Press enter or click to view image in full size

Bu installed_apps içerinde django ile birlikte dahili olarak gelen app’lerde bulunuyordu.Ve bu app’lerden mevcut olan işlemleri migrate işlemleri sonrası veritabanında görebilmiştik.Bu app’ler arasındaki ‘django.contrib.admin’ django’nun admin panelini kullanabilmemiz için

gerekli olan app’i temsil ediyor.Admin app’i bizim projemiz için oluşturduğumuz app’lerle aynı mantıkta çalışıyor ve projemizdeki modelleri yönetmek için kullanılıyor.Eğer projemizde bir admin panele ihtiyaç duymursak bu app’i bu listeden migration işlemini yapmadan çıkarabiliriz.Böylece projemizde kullanmayacağımız bir app’i devre dışı bırakarak hafifletmiş oluruz.Biz halihazırda tüm migration işlemlerimizi tanımladığımız için INSTALLED_APPS listesinde var olduğu için hemen bu app’e erişebiliriz.

Bunun için projemizi çalıştıralım.Bunun için yeni bir terminal açıyorum.Öncelikle manage.py dosyamla aynı konuma gitmek için

cd blog yazıyorum.

Press enter or click to view image in full size

Ardından python manage.py runserver

diyorum.

Press enter or click to view image in full size

Ardından bize verdiği adrese gidelim.

Ve adresi tarayıcıya yapıştırıyorum.

Press enter or click to view image in full size

localhost olarak da bilinen 127.0.0.1 adresi sadece yerel bilgisayarımızdan erişilebilen özel bir adresi temsil ediyor.

Press enter or click to view image in full size

Buradaki 8000 ise django’nun varsayılan olarak kullandığı adresin port numarasını temsil ediyor.Eğer bu port başka bir ağ servisi tarfından kullanılıyor olsaydı farklı bir portta tercih edebilirdik.

Adrese girdikten sonra adresin soluna /admin yazıyorum.

Press enter or click to view image in full size

Ve bu url’e gidiyorum.Şu anda admin arayüzüne erişmiş oluyoruz.

Press enter or click to view image in full size

Bizden giriş bilgileri istiyor.Şimdi django projemize geri dönelim.Burdan urls .py modulune girersek az önce giriş yaptığımız bu admin modelinin bu dosya içerisinde tanımlandığını görebilririz.

Press enter or click to view image in full size

Admin arayüzüne geri dönelim.Şimdi burada bizden giriş bilgileri istiyor.Bizim buraya giriş yapabilmemiz için admin panele erişim yetkisine sahip bir kayıt oluşturmamız gerekiyor.

Bu kaydı oluşturmak için vscode’daki projemize geri dönelim.Burada işlemlerimizi terminal üzerinden yürüteceğiz.Fakat burada projemin çalışır vaziyette kalması için yeni bir terminal açıyorum.

Burada manage.py script’inin bir diğer komutunu öğreneceğiz.

manage.py ‘ı çalıştırmak için önce proje kalsörüme giriyorum.

cd blog

Ardından

python manage.py createsuperuser

yazıyorum.

Press enter or click to view image in full size

Ardından çalıştırıyorum.

Superuser ,projede tüm yetkilere sahip olan hesabı temsil ediyor.

Burada bu hesabı kolay hatırlamak için bu user name ‘e admin yazacağım.

Press enter or click to view image in full size

Bizden email adresi istiyor burayı boş bırakabilriz.

Bizden daha sonra şifre istiyor ,şifreyi buraya yazsak dahi görünmeyecektir.

Tekrar aynı şifreyi istiyor admin yazıyorum.

Press enter or click to view image in full size

Ve burada bize diyor ki username ile password birbirine çok benzer aynı şekilde şifrede çok kısa diyor.Ama biz yine de Bypass etmek istiyoruz yani bu şekilde hesabı oluşturmak istiyoruz.O yüzden y dedim.Ve enterlıyorum

Ve superuser’ımızı başarıyla oluşturmuş olduk.

Press enter or click to view image in full size

Şimdi oluşturduğumuz hesapla giriş yapabiliriz.

Bunun için tarayıcımıza dönelim.Username’e admin,şifreye de admin diyorum.

Press enter or click to view image in full size

Log in dediğimde artık projemizin admin paneline erişebiliyoruz.

Press enter or click to view image in full size
Admin Paneli

Şimdi burada AUTHENTICATION AND AUTHORIZATION başlığı altında 2 seçenek var.Groups ve Users.

Press enter or click to view image in full size

Bunlar neden buradalar ve nereden geliyorlar?

Admin paneli/arayüzü projemizdeki tüm modelleri yönetmemizi sağlıyor.Buna applerde dahil.Burada görmüş olduğumuz groups ve users da projemiz içerisinde yer alan app’in modellerini temsil ediyor.Groups ve Users’ı içeren bu app ,django projesiyle varsayılan olarak gelen auth app’i

Auth,AUTHENTICATION’ın kısaltması.Auth app'i kullanıcı yetki yönetimini ve kimlik doğrulama işlemlerini üstlenen bir django app’i.Eğer projemize geri dönersek buradan projemizin settings.py dosyasına geri dönelim.

INSTALLED_APPS listesinde auth app’inin yer aldığını görebiliriz.

Press enter or click to view image in full size

Peki bu app’in admin panelde gördüğümüüz groups ve users modellerine sahip olduğunu doğrulayabilir miyiz?

Evet doğrulayibilirz.Bunun için ctrl tuşuna basılı tutarak auth’un üstüne tıklıyoruz.

Vscode ,bizi bu app’in bulunduğu dosyaya götürdü.

Press enter or click to view image in full size

Explorer sekmesinde auth app’inin tüm klasör yapısını görebiliyorum.Burada auth app’ine ait models.py dosyasını görmeliyiz.

Press enter or click to view image in full size

Ve burada biraz bakarsak admin paneli üzerinde yer alan Group yer alıyor.

Press enter or click to view image in full size

Biraz daha aşağı inersek de User modelinin de burada yer aldığını görebiliriz.

Press enter or click to view image in full size

Şimdi admin paneline geri dönelim.

Buradan users’a girelim.

Press enter or click to view image in full size

Users’a girdiğimizde projemizde kayıtlı tek bir admin bulunuyor.

Şimdi yeni bir user ekleyelim.Sağ üstteki Add User butonuna tıklıyorum.

Press enter or click to view image in full size

Aslında şu anda yapmış olduğumuz şey django shell de veritabanımıza yeni bir kayıt eklerken modellerimizle etkileşime girerkenki yaptığımız şeyle aynı.

Şu anda aynı işlemi sadece bir kullanıcı arayüzünde gerçekleştirirken kullanıyoruz.

Press enter or click to view image in full size

Burada bir isim belirleyelim.arda diyelim.Şifeye de arda 12345* diyorum.

Aynı şifreyi tekrarlıyorum.

Press enter or click to view image in full size

Burada dikkat etmemiz gerekn bir şey ise Username’in altında 150 karakter ve daha az kullanılmalı yazıyor.

Press enter or click to view image in full size

Bu 150 karakter sınırı CharField’ın max_length parametresi ile belirlenmiş.

Press enter or click to view image in full size

Şimdi burada kullanıcımızı kaydedelim SAVE’E tıklıyoruz.

Press enter or click to view image in full size

Ve Users sekmesine tekrardan tıklıyorum.

Press enter or click to view image in full size

Baktığımızda yeni kaydımız veritabanına eklenmiş.Yeni oluşturduğumuz kullanıcı kaydının Staff Status kısmında çarpı işareti varken admin de tik işareti var.Staff türkçe’de personel anlamına geliyor.Bu hesabın admin panele giriş yapıp yapamayacağını belirliyor.

Yetkilendirme işlemleri de Groups sekmesinden ayarlanıyor.

Şimdi post app’imize ait adımları admin paneline bağlayalım.Buradan posts app’imizdeki admin panel ile ilişkili olan admin.py dosyamıza gidelim.

Burada django.contrib’den import edilmiş paketi kullanacağız.

Press enter or click to view image in full size

admin.site.register()

Get Merve Nur Çifci’s stories in your inbox

Join Medium for free to get updates from this writer.

diyorum ve bu metoda argüman olarak admin paneli eklemek istediğimiz methodu vermeliyiz.Ve bunları yukarıda import ediyorum.

Press enter or click to view image in full size

Bu üç modulumüzü de bu dosyada kullanmak üzere import etmiş olduk.

Ve diğerlerini de ekleyelim.

Press enter or click to view image in full size

ve dosyayı kaydediyorum.admin panelime gidiyorum ve sayfayı yeniliyorum.

Press enter or click to view image in full size

Modellerimizin geldiğini görüyoruz.Ve bu modeller app’imizin ismini temsil eden POSTS ‘un altında yer alıyor.Üstteki ise Auth app’inin modellerini temsil ettiği için ayrı bir başlık altında yer alıyordu.

Mesela Authors’a tıklayalım.

Press enter or click to view image in full size

Burada veritabanı kayıtlarımız gözüküyor.Aynı sqlite veritabanında baktığımız gibi.

Posts’a girelim.

Press enter or click to view image in full size

Burada aynı şekilde eklediğimiz 3 post kaydı gözüküyor.

Ve Tags ‘de aynı şekilde.Eğer bunlardan birine girecek olursak bize burada düzenleme imkanı da tanıyor.

Press enter or click to view image in full size

Şimdi Groups sekmesine gidelim.

Press enter or click to view image in full size

Burada varsayılan olarak bir group oluşturulmamış.Buradan add Group’a tıklayalım.

Group,kullanıcılara atayabileceğimiz izinler bütününü temsil ediyor.

Press enter or click to view image in full size

Şimdi burada oluşturacağımız gruba bir isim vermemizi istiyor.Örneğin kendi projemizi düşündüğümüzde yazarların veritabanındaki sadece post modeliyle etkileşime girmesini isteyebiliriz.Bir post yayınlayacağında bunu admin panele girip kolayca yapabilir.Bunun için group ismimize Author diyelim.Mutlaka model ile aynı isimde olmak zorunda değil.Farklı bir isimde kullanabilriz.

Şimdi burada permission yani izinler diye bir menu var.

Available permission kısmını biraz aşağı kaydırırsak Posts modelimize ait modelllerin isimlerini göreceğiz.

author,post ve tag.

Press enter or click to view image in full size

Yanlarında da

can add

can change

can delete

can view

cümleleri yer alıyor.Burdan author grubuna dahil olan kullanıcıların hangi yetkilere sahip olması gerektiğini tanımlıyoruz.

Örneğin ben bir yazar hesabının yeni bir post oluşturabilmesini isterken bir postu veritabanından silebilmesini istemiyorum.Bu nedenle sadece can add post seçeeğine tıklıyorum.

Buraya çift tıklayalım.

Ve seçilen özellik sağdaki seçilen izinler ögesine geçiyor.

Press enter or click to view image in full size

Ve diğerlerini de yapalım.

Press enter or click to view image in full size

Ve bu grubu kaydedip save ‘e tıklıyorum.

Şimdi tekrar Users sekmesine gidip

Press enter or click to view image in full size

yeni oluşturduğumuz arda kullanıcına girersek alta doğru scrool yaptığımızda Grouplar adında bir bölüm görüyoruz.

Press enter or click to view image in full size

Bir altta da gruptan bağımsız olarak bu hesaba yönelik izinler tanımlayabiliyorum.

Press enter or click to view image in full size

Şimdi herhangi bir izin tanımlamadan önce admin paneline arda isminde kullanıcı ile giriş yapmayı sağlayalım.

arda diyorum

şifreyede Arda12345*

diyorum.

Press enter or click to view image in full size
Press enter or click to view image in full size

Ve burada hata aldım.staff hesabı için doğru username ve password giriniz diyor.

Yani giremediğimize göre bu hesabımız staff yetkisine sahip değil.Staff olmadığı için de admin panele giriş yapamıyoruz.

Şimdi admin hesabımıza geri dönelim ve arda kullanıcısına staff yetkisini tanımlayalım.

Buradan users sekmesine giriyorum.

ve arda’ya tıklıyorum.

Press enter or click to view image in full size

Burada biraz aşağıya kaydırdığımda Permission adlı bölümden staff status checkbox’ını işaretliyorum.Değişikliği kaydettim.

Press enter or click to view image in full size

Tekrar giriş yapalım.

Bu sefer giriş yaptık.Ancak bu sefer diyor ki

Press enter or click to view image in full size

bir şey görüntülemek veya düzenlemek için yetkiye sahip değilsin.Bir stuff hesabı oluşturduk ancak gerekli izinleri hesabımıza atamadık.

Admin panelden users’a gidip arda hesabına oluşturduğumuz author grubunu atayalım.

Press enter or click to view image in full size
Press enter or click to view image in full size

Buradaki author’u seçip chosen groups’a atıyorum.

Artık save diyebilirim.

Press enter or click to view image in full size

Artık author grubundaki yetkileri kullanabiliriz.

Press enter or click to view image in full size

Arda hesabıma geldiğimde ve sayfayı yenilediğimde artık yetki sahibi olduğumuz modelleri görüntüleyebiliyoruz.

Press enter or click to view image in full size

Şimdi buradki stuff hesabımızdan bir post oluşturalım.

Press enter or click to view image in full size
Press enter or click to view image in full size

Burada gerekli yerleri dolduralım.

Press enter or click to view image in full size

Tag ile post modelimiz arasında bire-çok ilişki olduğu için Tags den birden fazla seçebiliriz.Aşağıda nasıl seçebileceğimizden bahsetmiş.

Press enter or click to view image in full size

Ve post’umuzu kaydedelim.

Şimdi son kaydettiğimiz posta girdiğimizde

Press enter or click to view image in full size

herşey olamsı gerektiği gibi gözüküyor.

Press enter or click to view image in full size

Post üzerinde bir düzenleme veya post’u silme işlemini gerçekleştiremiyoruz.Çünkü bu hesapta buna yetkimiz yok.

Ancak admin hesabımıza superuser’a geçiş yaparsak ve aynı post kaydımıza girersek

Press enter or click to view image in full size
Press enter or click to view image in full size
Press enter or click to view image in full size

Burada post’u düzenleme,silme ;yeni author ve tag’ler ekleme özelliğini görüyoruz.

--

--

Merve Nur Çifci
Merve Nur Çifci

Written by Merve Nur Çifci

I am a computer engineer and I'm also interested in ui/ux design.