Django Admin Panel’den Kullanıcı Şifresi Değiştirmek

Baysan
3 min readSep 7, 2020

--

Merhabalar, bu yazımda sizlere Django Admin üzerinden kullanıcı şifresini göstermeye çalışacağım. Bunun için yazı mı yazılır dediğinizi duyar gibiyim :) Fakat ufak bir teknik aksaklık benim için gereksiz baş ağrısına neden oldu.

İlk başta sorunun kodladığım bir projede Custom User Model oluşturmamdan kaynaklı olduğunu sanıyordum fakat az önce fark ettim default olarak gelen User Model’de de aynı sorun ile karşılaşıyorum. Aşağıdaki uygulamayı her iki durum için de yapabiliriz.

Sorun: createsuperuser komutu ile oluşturduğum (veya herhangi bir şekilde oluşturulan) kullanıcıların parolalarını değiştirirken admin panelinde girdiğim parolananın şifrelenmemesi sonucu giriş yapamıyor olmam. Kısaca; Formu doldurup post ettikten sonra kullanıcıya şifre olarak, girdiğim parolanın atanması (parolanın şifrelenmemesi). Burayı Parola != Şifre diyerek geçiyorum :)

Şimdi çözümü basit fakat etkisi çok büyük olan bu problemi nasıl çözebiliriz ona bakalım.

Öncelikle herhangi bir app altındaki admin.py dosyasına gidiyorum ve User modelimi import ediyorum.

Sırasıyla; önce User modelimi unregister ile admin panelinden kaldırıyorum, admin.ModelAdmin’den UserAdmin adında bir sınıf oluşturuyorum, son olarak User ve UserAdmin sınıflarımı admin.py ile register ediyorum. Bunun sebebi ise aynı modeli iki kez kayıt edemiyor olmamız. Önce default gelen register’ı kaldırıyoruz, sonra kendi ModelAdmin sınıfımız ile bind edip tekrar register ediyoruz.

Şimdi ModelAdmin sınıfının save_model metodunu override edeceğiz.

Dilerseniz debug modunda bakalım ve Post edilen data içerisinde neler geliyormuş bir bakalım.

Post edilen data içerisinde password olarak forma girdiğimiz parolamız gözüküyor. Override ettiğimiz metodu biraz daha geliştireceğiz ve User’in kendisine ait set_password metodunu kullanarak formdan girilen parolayı şifreleyerek kullanıcıya atayacağız.

Ve şimdi tekrar formu post edip kontrol ediyoruz, eğer başarılıysak Parola yazan kısımda şifrelenmiş veri gözükecektir.

Evet başarılı bir şekilde işlemi gerçekleştirdik. Umarım sizin de işinize yarar.

Edit: Yazıdaki uygulama her iki durum için de başarılı sonuç verecektir (default user ve custom user). Fakat default User’i kullanıyorsanız kendi yazdığınız UserAdmin(admin.ModelAdmin) sınıfınızı User model ile bind etmediğiniz sürece problem çıkmayacaktır. Fakat kendi ModelAdmin sınıfınızı da işin içine dahil ederseniz o zaman sizde benim aldığım hatayı alacaksınızdır.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Baysan
Baysan

Written by Baysan

Lifelong learner & Developer. I use technology that helps me. mebaysan.com

No responses yet

Write a response