Django

⌘K
  1. Home
  2. Django
  3. library
  4. Djoser
  5. 08. Custom User Model Djoser

08. Custom User Model Djoser

Djoser ব্যবহার করে Django প্রজেক্টে Custom User Model তৈরি করা হলে ইউজার মডেলে অতিরিক্ত ফিল্ড যেমন phone_number, address যোগ করা যায়। এভাবে Django-এর বিল্ট-ইন User মডেল কাস্টমাইজ করে অ্যাপ্লিকেশনের নির্দিষ্ট প্রয়োজনীয়তা পূরণ করা যায়। নিচে কাস্টম ইউজার মডেল তৈরি এবং সেটআপ করার ধাপগুলো বিস্তারিতভাবে দেখানো হলো।

১. কাস্টম ইউজার মডেল তৈরি করা

প্রথমে একটি নতুন অ্যাপ তৈরি করতে হবে (যদি ইতিমধ্যে না থাকে) এবং সেখানে কাস্টম ইউজার মডেল তৈরি করতে হবে।

একটি অ্যাপ তৈরি করা:

python manage.py startapp accounts

models.py ফাইলে কাস্টম ইউজার মডেল তৈরি:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=15, blank=True, null=True)
    address = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.username

২. Custom User Model সেটিংসে সেট করা

settings.py ফাইলে AUTH_USER_MODEL নির্দেশ করতে হবে যাতে Django কাস্টম ইউজার মডেল ব্যবহার করে।

settings.py:

AUTH_USER_MODEL = 'accounts.CustomUser'

৩. মাইগ্রেশন তৈরি ও প্রয়োগ করা

মডেল পরিবর্তনগুলোর জন্য মাইগ্রেশন তৈরি করতে হবে এবং তা ডাটাবেজে প্রয়োগ করতে হবে।

মাইগ্রেশন তৈরি করা:

python manage.py makemigrations accounts

মাইগ্রেশন প্রয়োগ করা:

python manage.py migrate

৪. Djoser কনফিগারেশন আপডেট করা

Djoser কাস্টম ইউজার মডেল স্বীকৃত করে। Djoser এর ডিফল্ট সেরিয়ালাইজার কাস্টমাইজ করতে চাইলে একটি কাস্টম সেরিয়ালাইজার তৈরি করতে হবে।

serializers.py ফাইলে কাস্টম সেরিয়ালাইজার তৈরি:

from djoser.serializers import UserCreateSerializer, UserSerializer
from .models import CustomUser

class CustomUserCreateSerializer(UserCreateSerializer):
    class Meta(UserCreateSerializer.Meta):
        model = CustomUser
        fields = ('id', 'username', 'email', 'password', 'first_name', 'last_name', 'phone_number', 'address')

Djoser কনফিগারেশন আপডেট:

DJOSER = {
    'SERIALIZERS': {
        'user_create': 'accounts.serializers.CustomUserCreateSerializer',
        'user': 'accounts.serializers.CustomUserCreateSerializer',
    },
}

৫. Custom Fields ব্যবহারের সুবিধা

  • phone_number এবং address ফিল্ড অ্যাকাউন্ট ক্রিয়েশনের সময় বা প্রোফাইল আপডেট করার সময় ব্যবহার করা যাবে।
  • Djoser এর মাধ্যমে এই ফিল্ডগুলো ইউজার রেজিস্ট্রেশন এবং প্রোফাইল রিট্রিভিং এ অন্তর্ভুক্ত করা যাবে।

settings.py ফাইলে INSTALLED_APPSaccounts অ্যাপ যুক্ত করতে ভুলবেন না:

INSTALLED_APPS = [
    ...
    'accounts',
    ...
]

৬. কাস্টম ফিল্ড ব্যবহার করে ইউজার রেজিস্ট্রেশন

Djoser এর ডিফল্ট রেজিস্ট্রেশন API ব্যবহার করে এখন phone_number এবং address সহ ইউজার রেজিস্ট্রেশন করা যাবে।

POST /auth/users/ API এ রেজিস্ট্রেশন ডেটা পাঠানোর উদাহরণ**:

{
    "username": "john_doe",
    "email": "john@example.com",
    "password": "securepassword123",
    "first_name": "John",
    "last_name": "Doe",
    "phone_number": "1234567890",
    "address": "123 Main Street, City, Country"
}

এভাবে, Django প্রজেক্টে কাস্টম ইউজার মডেল তৈরি করে এবং Djoser এর সাথে কনফিগার করে কাস্টম ফিল্ড ব্যবহার করা সম্ভব।

How can we help?