Django

⌘K
  1. Home
  2. Django
  3. Django Rest Framework
  4. সিরিয়ালাইজার

সিরিয়ালাইজার

সিরিয়ালাইজার ?

Django REST framework-এর serializers ক্লাসটি ডেটাবেজ থেকে ডেটা অ্যাক্সেস এবং এক্সপোর্ট করার জন্য ব্যবহৃত হয়। এটি মডেলগুলিকে JSON, XML, CSV ইত্যাদি ফর্ম্যাটে রূপান্তর করার জন্য ব্যবহার করা হয়।

সিরিয়ালাইজার ক্লাসের মাধ্যমে আপনি ডাটাবেজ থেকে ডাটা পেয়ে তা জেসনে রূপান্তর করতে পারেন। এরপর এই জেসন ডাটা আপনি অন্য কোনো অ্যাপ্লিকেশনে ব্যবহার করতে পারবেন।

সিরিয়ালাইজার তৈরী করি

blog এপ্লিকেশন ফোল্ডারে serializers.py নামে একটি ফাইল তৈরী করি এবং আমাদের সিরিয়ালাইজার তৈরী করি

সিরিয়ালাইজ আমরা দুইভাবে কাজ করতে পারি

  • serializers.Serializer
  • serializers.ModelSerializer

serializers.Serializer : এটা দিয়ে ম্যানুয়ালি সিরিয়ালাইজার বানাতে হয়

serializers.ModelSerializer : এটা django মডেলকে ব্যবহার করে বানাতে হয় যা অনেক সহজ যেমন আমরা django তে মডেল থেকে ফর্ম বানানোর সময় মডেলফর্ম ব্যবহার করি ঐরকম আরো ভালো বুঝার জন্য নিচের কোড দুইটি লক্ষ্য করি যেটা আমরা আমাদের blog এপ এর ।

POST মডেলটি লক্ষ্য করি

class Post(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=255)
    content = models.TextField()
    active = models.BooleanField(default=False)

    def __str__(self):
        return self.title

এই মডেলকে সিরিয়ালাইজ করার জন্য পদ্ধতি দুইটির ব্যবহার দেখি ।

serializers.Serializer

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(max_length=255)
    content = serializers.CharField()
    active = serializers.BooleanField(default=False)

    def create(self, validated_data):
        post = Post.objects.create(**validated_data)
        return post

    def update(self, instance, validated_data):
        instance.title = validated_data.get('title', instance.title)
        instance.content = validated_data.get('content', instance.content)
        instance.active = validated_data.get('active', instance.active)
        instance.save()
        return instance

serializers.ModelSerializer

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model= Post
        fields = "__all__"

serializers.Serialize এ সব মেথড লিখতে হয় আর serializers.ModelSerializer মডেল সিরিয়ালাইজার টি অনেক সহজ কিন্তু প্রশ্ন হলো কেন আমরা মডেল সিরিয়ালাইজার ছেড়ে অন্যটি ব্যবহার করবো এর উত্তর হলো serializers.Serialize টি কাস্টম ভাবে অনেক ভ্যালিডেশন ও কাস্টমাইজ করা যায় যেটা স্পেসিফিক কিছু প্রজেক্ট এ দরকার পরে যেটাতে মডেল সিরিয়ালাইজার দিয়ে হয়না।

How can we help?