Django Admin Panel1
Bu yazımda django’nun en değerli özelliklerinden biri olan kolaylıkla yönetebileceğimiz Admin Panel arayüzünü kullanacağız.
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:
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.
Ardından python manage.py runserver
diyorum.
Ardından bize verdiği adrese gidelim.
Ve adresi tarayıcıya yapıştırıyorum.
localhost olarak da bilinen 127.0.0.1 adresi sadece yerel bilgisayarımızdan erişilebilen özel bir adresi temsil ediyor.
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.
Ve bu url’e gidiyorum.Şu anda admin arayüzüne erişmiş oluyoruz.
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.
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.
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.
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.
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.
Şimdi oluşturduğumuz hesapla giriş yapabiliriz.
Bunun için tarayıcımıza dönelim.Username’e admin,şifreye de admin diyorum.
Log in dediğimde artık projemizin admin paneline erişebiliyoruz.
Şimdi burada AUTHENTICATION AND AUTHORIZATION başlığı altında 2 seçenek var.Groups ve Users.
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.
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ü.
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.
Ve burada biraz bakarsak admin paneli üzerinde yer alan Group yer alıyor.
Biraz daha aşağı inersek de User modelinin de burada yer aldığını görebiliriz.
Şimdi admin paneline geri dönelim.
Buradan users’a girelim.
Users’a girdiğimizde projemizde kayıtlı tek bir admin bulunuyor.
Şimdi yeni bir user ekleyelim.Sağ üstteki Add User butonuna tıklıyorum.
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.
Burada bir isim belirleyelim.arda diyelim.Şifeye de arda 12345* diyorum.
Aynı şifreyi tekrarlıyorum.
Burada dikkat etmemiz gerekn bir şey ise Username’in altında 150 karakter ve daha az kullanılmalı yazıyor.
Bu 150 karakter sınırı CharField’ın max_length parametresi ile belirlenmiş.
Şimdi burada kullanıcımızı kaydedelim SAVE’E tıklıyoruz.
Ve Users sekmesine tekrardan tıklıyorum.
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.
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.
Bu üç modulumüzü de bu dosyada kullanmak üzere import etmiş olduk.
Ve diğerlerini de ekleyelim.
ve dosyayı kaydediyorum.admin panelime gidiyorum ve sayfayı yeniliyorum.
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.
Burada veritabanı kayıtlarımız gözüküyor.Aynı sqlite veritabanında baktığımız gibi.
Posts’a girelim.
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.
Şimdi Groups sekmesine gidelim.
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.
Ş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.
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.
Ve diğerlerini de yapalım.
Ve bu grubu kaydedip save ‘e tıklıyorum.
Şimdi tekrar Users sekmesine gidip
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.
Bir altta da gruptan bağımsız olarak bu hesaba yönelik izinler tanımlayabiliyorum.
Şimdi herhangi bir izin tanımlamadan önce admin paneline arda isminde kullanıcı ile giriş yapmayı sağlayalım.
arda diyorum
şifreyede Arda12345*
diyorum.
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.
Burada biraz aşağıya kaydırdığımda Permission adlı bölümden staff status checkbox’ını işaretliyorum.Değişikliği kaydettim.
Tekrar giriş yapalım.
Bu sefer giriş yaptık.Ancak bu sefer diyor ki
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.
Buradaki author’u seçip chosen groups’a atıyorum.
Artık save diyebilirim.
Artık author grubundaki yetkileri kullanabiliriz.
Arda hesabıma geldiğimde ve sayfayı yenilediğimde artık yetki sahibi olduğumuz modelleri görüntüleyebiliyoruz.
Şimdi buradki stuff hesabımızdan bir post oluşturalım.
Burada gerekli yerleri dolduralım.
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ş.
Ve post’umuzu kaydedelim.
Şimdi son kaydettiğimiz posta girdiğimizde
herşey olamsı gerektiği gibi gözüküyor.
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
Burada post’u düzenleme,silme ;yeni author ve tag’ler ekleme özelliğini görüyoruz.







