সিরিয়ালাইজার ?
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 instanceserializers.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 টি কাস্টম ভাবে অনেক ভ্যালিডেশন ও কাস্টমাইজ করা যায় যেটা স্পেসিফিক কিছু প্রজেক্ট এ দরকার পরে যেটাতে মডেল সিরিয়ালাইজার দিয়ে হয়না।