Django Özelleştirilmiş UserModel Oluşturmak

Baysan
3 min readSep 13, 2020

--

Merhabalar, bu yazımda Django’da özelleştirilmiş, profil fotoğrafına sahip bir UserModel’i nasıl oluşturabileceğimizi anlatmaya çalışacağım. Kolay olması açısından bu örneği AbstractUser kullanarak yapacağım.

Eminim ki bir çoğumuz Django ile çalışırken kullanıcılarımızın profil fotoğraflarını almayı istemişizdir. Bunun için genelde kullanılan yöntem ayrı bir Profile modeli tanımlamak ve bir User modeli ile bağlayıp signal kullanarak kayıt işlemini tamamlamaktır. Buna ek olarak Django ile birlikte gelen AbstractUser ve AbstractBaseUser sınıflarını miras alarak da kendi User sınıfımızı oluşturabiliriz.

AbstractUser vs AbstractBaseUser

Django default olarak kullanıcı doğrulamak için username kullanır. Biz bunu değiştirmek istersek veya kullanıcılarımıza başka özellikler eklemek istersek AbstractUser ve AbstractBaseUser sınıflarını kullanabiliriz. Peki ikisi arasındaki fark nedir?

AbstractUser

Default gelen User modelinden memnunsak, yalnızca bazı fieldları çıkartmak veya bazı yeni fieldlar eklemek istiyorsak bu sınıfı kullanmamız gerekmektedir.

AbstractBaseUser

Eğer ki hiç bir şekilde default gelen User modelinden memnun değilsek sıfırdan kendi User modelimizi oluşturmak için bu sınıfı kullanmamız gerekmektedir.

Şimdi örneğimize geçelim. Sıfırdan bir django projesi oluşturuyorum ve içerisinde myuser adında bir app oluşturuyorum.

myuser altındaki models.py dosyama gidiyorum ve AbstractUser sınıfını import ediyorum.

Kendime MyUser adında, AbstractUser sınıfını miras alan bir sınıf oluşturuyorum.

  • Profil fotoğrafı için profile_photo adında bir field ekliyorum

Kendi kullanıcı modelimizi oluşturduğumuza göre artık bunu settings.py içerisinde AUTH_USER_MODEL ile Django’ya bildirmeliyiz ve o da authentication işlemlerinin bu model üzerinden yapılacağını anlasın. Şema şu şekildedir: hangi_app.HangiModel

Artık migrate işlemlerini gerçekleştirebiliriz. ImageField kullandığımız için Pillow kütüphanesinin yüklenmesi gerekmektedir (pip install Pillow).

Kendime bir superuser oluşturuyorum ve admin panele giriş yapıyorum. Vee karşımda MyUser modellerini yönetebileceğim bir bölüm yok. Bunun için MyUser modeli admin.py içerisinde admin app’imize kayıt ediyoruz.

admin.py içerisinde modelimizi kayıt ediyoruz.
Artık kullanıcılarımıza profil fotoğrafları ekleyebiliriz.

İstersek aşağıdaki gibi bir modifikasyonla resimleri admin panelimizde de gösterebiliriz.

Kendi kullanıcı modelimizi oluşturmayı kolay olması için sadece profil fotoğrafı ekleyerek göstermeye çalıştım. Fakat biraz daha ileri seviye sayılabilecek özelleştirmeler için Django’nun kendi official dökümanlarından yararlanabilirsiniz. Umarım faydalı olmuştur, iyi çalışmalar.

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