"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Django AllAuth अध्याय कस्टम फ़ील्ड के साथ Django AllAuth उपयोगकर्ता मॉडल का विस्तार कर रहा है

Django AllAuth अध्याय कस्टम फ़ील्ड के साथ Django AllAuth उपयोगकर्ता मॉडल का विस्तार कर रहा है

2024-08-25 को प्रकाशित
ब्राउज़ करें:972

नोट: यह लेख प्रारंभ में मेरे सबस्टैक पर https://andresalvareziglesias.substack.com/

पर पोस्ट किया गया था।

यह पोस्ट की इस Django AllAuth श्रृंखला का अंतिम अध्याय है। इन पांच अध्यायों में हमने आश्चर्य का एक छोटा सा टुकड़ा खोजा है, जो हमारी सभी प्रमाणीकरण आवश्यकताओं को संभालने के लिए वास्तव में उपयोगी Django घटक है। इस अध्याय में हम सीखेंगे कि कस्टम फ़ील्ड जोड़ने के लिए मूल Django उपयोगकर्ता मॉडल का विस्तार कैसे करें।

अध्यायों की सूची

  • अध्याय 1 - Django में ऑथ के लिए ऑल-इन-वन समाधान
  • अध्याय 2 - Django AllAuth को कैसे स्थापित और कॉन्फ़िगर करें
  • अध्याय 3 - Django AllAuth के साथ सामाजिक लॉगिन
  • अध्याय 4 - Django AllAuth UI को अनुकूलित करना
  • अध्याय 5 - कस्टम फ़ील्ड के साथ Django AllAuth उपयोगकर्ता मॉडल का विस्तार ←यह वाला!

Django AllAuth Chapter  Extending Django AllAuth user model with custom fields

Django उपयोगकर्ता मॉडल

ऑलऑथ सामाजिक लॉगिन और लॉगिन टोकन को संभालने के लिए मानक Django उपयोगकर्ता मॉडल, साथ ही कुछ अतिरिक्त तालिकाओं का उपयोग करता है। Django 5 में, उपयोगकर्ता मॉडल django.contrib.auth पैकेज में स्थित है, और इसमें पूर्वनिर्धारित फ़ील्ड का एक समूह है, जैसा कि आप आधिकारिक दस्तावेज़ में पढ़ सकते हैं:

  • https://docs.djangoproject.com/en/5.0/ref/contrib/auth/

कभी-कभी, यह हमारे प्रोजेक्ट के लिए पर्याप्त नहीं होता है। Django आपको हर प्रोजेक्ट की जरूरतों को संभालने के लिए कस्टम यूजर टेबल और यूजर मैनेजर बनाने की अनुमति देता है।

हम अपनी लॉगिन और पंजीकरण प्रक्रियाओं को संभालने के लिए एक कस्टम उपयोगकर्ता तालिका और एक कस्टम उपयोगकर्ता प्रबंधक बनाने जा रहे हैं।

एक कस्टम उपयोगकर्ता तालिका बनाना

हमारे नमूना प्रोजेक्ट में models.py खोलें और इस तरह एक कोड लिखें:

class MyCustomUser(AbstractBaseUser):
   email = models.EmailField(unique=True)
   first_name = models.CharField(max_length=30, blank=True)
   last_name = models.CharField(max_length=30, blank=True)
   is_active = models.BooleanField(default=True)
   is_admin = models.BooleanField(default=False)
   timezone = models.CharField(max_length=30, default='UTC')
   is_custom = models.BooleanField(default=False)
   is_staff = models.BooleanField(default=False)
   created_at = models.DateTimeField(auto_now_add=True)
   updated_at = models.DateTimeField(auto_now=True)

   objects = MyCustomUserManager()
   USERNAME_FIELD = 'email'
   EMAIL_FIELD = 'email'

   def __str__(self):
       return self.email
   def has_perm(self, perm, obj=None):
       return True
   def has_module_perms(self, app_label):
       return True

   @property
   def is_utc(self):
       return self.timezone == 'UTC'

हम Django के AbstractBaseUser मॉडल से विस्तारित एक नए उपयोगकर्ता मॉडल को परिभाषित कर सकते हैं। इस नए मॉडल में हम वे सभी फ़ील्ड या कस्टम गुण जोड़ सकते हैं जिनकी हमें आवश्यकता है।

ये पंक्तियाँ महत्वपूर्ण हैं:

   objects = MyCustomUserManager()
   USERNAME_FIELD = 'email'
   EMAIL_FIELD = 'email'

इन पंक्तियों के साथ हम उपयोगकर्ता मॉडल को अपने कस्टम उपयोगकर्ता प्रबंधक के साथ जोड़ रहे हैं, और हम एक अद्वितीय "उपयोगकर्ता नाम" के रूप में कार्य करने वाले फ़ील्ड को भी परिभाषित कर रहे हैं।

नए मॉडल को Django एडमिन टूल से प्रबंधित करने के लिए admin.py में पंजीकृत करना याद रखें।

from django.contrib import admin
from .models import MyCustomUser

admin.site.register(MyCustomUser)

एक कस्टम उपयोगकर्ता प्रबंधक बनाना

हमारे नमूना प्रोजेक्ट में दोबारा models.py खोलें (या यदि आप चाहें तो कस्टम यूजरमैनेजर के लिए एक और फ़ाइल जेनरेट करें) और इस तरह एक कोड लिखें:

class MyCustomUserManager(BaseUserManager):

   def create_user(self, email, password=None):
       if not email:
           raise ValueError('Users must have an email address')

       user = self.model(
           email=self.normalize_email(email),
       )

       user.set_password(password)

       user.save(using=self._db)
       return user

   def create_superuser(self, email, password):
       user = self.create_user(
           email=email,
           password=password,
       )

       user.is_admin = True
       user.is_staff = True

       user.save(using=self._db)
       return user

इस उदाहरण में हम अपना कस्टम यूजरमैनेजर बनाने के लिए बेसयूजरमैनेजर का विस्तार कर रहे हैं। यह हमारे नए उपयोगकर्ता बनाता है, और हमारी अपेक्षा के अनुरूप कस्टम फ़ील्ड भरता है।

हमने अपने कस्टम उपयोगकर्ता मॉडल के लिए UserManager से पहले परिभाषित किया है, इसलिए Django को पता है कि नए उपयोगकर्ता निर्माण के दौरान किस वर्ग का उपयोग करना है।

कस्टम उपयोगकर्ता प्रबंधक और मॉडल का उपयोग करना

हमारे प्रोजेक्ट की सेटिंग फ़ाइल में हम अपने प्रोजेक्ट के लिए वर्तमान उपयोगकर्ता मॉडल को सेट कर सकते हैं:

# Set custom user model as the active one
AUTH_USER_MODEL = 'demo.MyCustomUser'

# Configure AllAuth username related management, because we are 
# using the e-mail as username. See:
# https://docs.allauth.org/en/latest/account/advanced.html
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USER_MODEL_USERNAME_FIELD = None

सिर्फ इस छोटे से बदलाव (और हमेशा की तरह आवश्यक डीबी माइग्रेशन) के साथ, हम अपने चमकदार कस्टम यूजरमैनेजर और उसके मॉडल को क्रियाशील देखने के लिए ऑलऑथ साइनअप दृश्यों के साथ उपयोगकर्ता बनाना शुरू कर सकते हैं। त्वरित और आसान।

हम AllAuth उपयोगकर्ता नाम संबंधित प्रबंधन को भी अक्षम कर रहे हैं, क्योंकि हम इस उदाहरण में उपयोगकर्ता नाम के रूप में ई-मेल का उपयोग कर रहे हैं।

और यह अंत है... या नहीं?

हम इस AllAuth श्रृंखला के अंतिम अध्याय पर पहुंच गए हैं। AllAuth हमारे ऐप्स में प्रमाणीकरण को संभालने के लिए एक अद्भुत लाइब्रेरी है, और इसकी पूर्वनिर्धारित एकीकरणों की बड़ी सूची के कारण, सामाजिक लॉगिन के साथ काम करना विशेष रूप से आसान हो जाता है।

यह श्रृंखला का अंतिम अध्याय है, लेकिन मैं भविष्य की पोस्टों में AllAuth पर दोबारा गौर करूंगा। पढ़ने और खुश कोडिंग के लिए धन्यवाद!

सूची के बारे में

पायथन और डॉकर पोस्ट के अलावा, मैं अन्य संबंधित विषयों (हमेशा तकनीकी और प्रोग्रामिंग विषय, मैं वादा करता हूं... उंगलियों को पार करके) के बारे में भी लिखूंगा, जैसे:

  • सॉफ़्टवेयर आर्किटेक्चर
  • प्रोग्रामिंग वातावरण
  • लिनक्स ऑपरेटिंग सिस्टम
  • वगैरह।

यदि आपको कोई दिलचस्प तकनीक, प्रोग्रामिंग भाषा या कुछ और मिले, तो कृपया मुझे बताएं! मैं हमेशा कुछ नया सीखने के लिए तैयार रहता हूँ!

लेखक के बारे में

मैं एन्ड्रेस हूं, पाल्मा में स्थित एक पूर्ण-स्टैक सॉफ़्टवेयर डेवलपर, अपने कोडिंग कौशल को बेहतर बनाने के लिए एक व्यक्तिगत यात्रा पर। मैं एक स्व-प्रकाशित फंतासी लेखक भी हूं और मेरे नाम पर चार प्रकाशित उपन्यास हैं। आप मुझसे कुछ भी पूछ सकते हैं!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/doctorserone/django-allauth-chapter-5-extending-django-allauth-user-model-with-custom-fields-55ia?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3