Herkes Python’un çok popüler bir Django çerçevesine sahip olduğunu bilir. Varsayılan olarak, buradaki kullanıcı modeli bir e-posta, kullanıcı adı ve şifre içerir. Ancak çoğu zaman varsayılan kullanıcı modelini genişletmenin ve değiştirmenin gerekli olduğu durumlar vardır.
Örneğin, bir kullanıcı adına değil, yalnızca bir e-postaya ihtiyacımız olduğu durumlar vardır. Veya bir e-posta yerine bir telefon numarasına ihtiyacımız var ve e-posta önemli değil. Bu tür durumlarda, varsayılan model, ilgili alanları içeren özel bir modelle değiştirilmelidir. Bu nedenle, Django-swap-user projesinin amacı, mevcut bir modeli özel bir modelle değiştirmektir.
Ayrıca, tek seferlik kodla yetkilendirme artık popülerlik kazanmaya başlıyor. Dolayısıyla bu senaryoyu kütüphanede de hesaba kattık. Yeni bir kullanıcı modeli göründüğünde, yalnızca bir alanı (e-posta veya telefon numarası) ve tek seferlik bir parolası vardır. Veritabanında saklanan bir parola yoktur ve bağlandığınız herhangi bir sağlayıcı kullanılarak tek seferlik bir parola gönderilir. Giriş yapmak için kullanabileceğiniz tek seferlik bir SMS alırsınız.
Neden bunun için bütün bir kütüphane yazdık? Yeni projelere başladığımızda genellikle özel bir kullanıcı modeline ihtiyaç duyarız. Önceden, her şeyi bir projeden diğerine kopyalıyorduk, ama sonra anladık – bir kere kitaplık yazabilecekken neden sürekli kopyalayacaksınız ve hepsi bu. Hazır bir kütüphane bulmak istedik ama hazır olanların hepsi ya terk edildi ya da güncelliğini yitirdi. Bu yüzden Python Ekip Liderimiz Artem Innokentiev, bu paketi kendisi yazmaya ve açık kaynaklı hale getirmeye karar verdi.
Bu nedenle, özel bir kullanıcı modelini bir projeden diğerine kopyalamaktan bıktıysanız, bu paketi kullanın. Her şeyi sizin için yapacak!
Kurulum
pip install django-swap-user
Mimari
Başvuru
swap_user birkaç uygulamaya bölünmüştür:
to_email– kullanıcıya sağlar
to_email_otp– kullanıcıya sağlar
to_phone– kullanıcıya sağlar
phonekullanıcı adı alanı
to_phone_otp– kullanıcıya sağlar
phonekullanıcı adı alanı ve OTP (Tek Kullanımlık Şifre) kimlik doğrulaması
Neden böyle sıra dışı bir mimari?
Bunları tek bir uygulamada bırakırsak, hepsi geçişler ve tablolar oluşturarak gereksiz tablolara yol açar. Aynı uygulama içinde üç özel model olarak ele alınacaklar ve bu da kafa karışıklığına neden oluyor.
Bu yaklaşımla (dahili uygulamaları içeren ortak bir uygulamanın olduğu yerde), kullanıcı yalnızca somut iş mantığına en uygun belirli kullanıcı modelini seçip bağlayabilir.
Bu yaklaşımı Django REST Çerçevesinden sonra modelledik
authtoken başvuru, başvurulan burada.
Bir projenin başlangıcında özel bir kullanıcı modeli kullanma
Sıfırdan bir projeye başladığınızda, çok fazla geçiş yapmadığınız veya bunları kolayca yeniden oluşturabileceğiniz için özel bir kullanıcı modelini entegre etmenin en iyi zamanıdır. Ayrıca, Django’nun resmi belgeler varsayılandan tamamen memnun olsanız bile, özel bir kullanıcı modeli kullanmanızı öneririz. Gelecekte, kullanım durumlarınıza uyacak şekilde özel bir modeli genişletmek daha kolay olacaktır.
Bir projenin ortasında özel bir kullanıcı modelinin dahil edilmesi
Bir projenin ortasına özel bir kullanıcı modeli eklemek, işleri yapmanın daha zor bir yoludur, ancak yine de mümkündür.
- Test veritabanındaki tüm adımları tamamlayın ve YALNIZCA hepsi başarılı olduysa bunu üretim ortamında uygulamaya çalışın
- Lütfen bu adımların çoğu duruma uyduğunu, ancak bazı durumlarda duruma uyum sağlamanız gerekebileceğini unutmayın.
- Veritabanınızın bir yedeğini oluşturun
- Deponuza kararlı etiket ekleyin veya bir taahhüt karma referansı kaydedin
- dua et 😀
- Django projesinin her uygulamasında tüm geçişlerinizi kaldırın
- Tüm kayıtları şuradan kaldır:
django_migrationstablo, örneğin
SQL TRUNCATE django_migrations
- Artık “temiz” bir durumunuz var, böylece varsayılan modeli değiştirebilirsiniz
- Tüm uygulamalarınız için yeni geçişler oluşturun—
python manage.py makemigrations
- şimdi ihtiyacın var sahte göççünkü zaten veri içeren tüm tablolara sahipsiniz
- İlk olarak, sahte
authuygulama, çünkü buna bağlısınız:
python manage.py migrate --fake auth
- Kitaplığı kurun, talimatları izleyin ve geçişleri uygulayın
- Ardından, sahip olduğunuz diğer göçleri taklit edin—
python manage.py migrate --fake
- Uygulamanızı çalıştırın!
Gelecek için planlar
Gelecekte, daha iyi dokümantasyon yazmayı ve projeye uygulama eklemeyi planlıyoruz. Yavaş yavaş, örneğin karışık olanlar gibi yeni yetkilendirme yöntemleri ekleyeceğiz. E-posta veya telefon yoluyla yetkilendirme yapmanız gereken durumlar vardır ve bunu eklemek isteriz.
Şu anda herkes bu projeyi kullanabilir ve topluluğun üyelerini projenin gelişimine katkıda bulunmak ve yardımcı olmak için çekmeyi çok isteriz!
Ve elbette, açık kaynaklı bir çözüm geliştirmeniz gerekiyorsa veya sıfırdan bir proje inşa edecek profesyonel bir ekip arıyorsanız, aşağıdaki form aracılığıyla bize ulaşın!