본문 바로가기

Django

[Django] Django DRF, Serializer 란 ?

Django DRF 란?

Django DRF(Django REST Framework)는 파이썬 웹 프레임워크인 Djang를 사용하여 RESTful API를 쉽게 구축할 수 있게 도와주는 오픈소스 라이브러리

 

주요 기능 :

 

1. 시리얼라이저(Serializer)

- 데이터 직렬화와 역질력화를 수행하여, 모델 인스턴스나 쿼리셋 등의 복잡한 데이터를 JSON, XML 등의 형태로 변환함

 

2. 뷰(View)

- API 요청을 처리하고, 요청된 데이터를 시리얼라이저를 통해 처리하여 응답함

- 기본적으로 RESTful한 CRUD(Create, Retrieve, Update, Delete) API 뷰를 제공하며, 커스텀 뷰를 작성할 수도 있음

 

3. 라우터(Router)

- URL 패턴을 자동으로 생성해주는 기능을 제공합니다. 이를 통해 뷰 코드의 중복을 방지하고, 코드의 가독성을 높일 수 있음

 

4. 인증(Authentication)

- API 요청을 인증하는 다양한 방법을 제공함

- 예를 들어, 토큰 기반 인증, OAuth2 인증 등을 지원함

 

5. 엑세스 제어(Access Control)

- API 요청에 대한 엑세스 제어를 수행하는 다양한 방법을 제공함

- 예를 들어, 유저 권한 기반 엑세스 제어, IP 주소 기반 엑세스 제어 등을 지원함

 

6. 요청/응답(Request/Response)

- API 요청과 응답에 대한 다양한 기능을 제공함
- 예를 들어, 요청 데이터의 유효성 검사, 응답 데이터의 포맷팅 등을 지원함

Django Serializer 란 ?

Django serializer는 Django 웹 프레임워크에서 제공하는 기능 중 하나로, Django 모델 객체를 JSON이나 XML 등의 직렬화된 형식으로 변환해주는 도구

 

특징 :

- Django 모델의 필드, 관계, 메서드 등을 모두 직렬화할 수 있으며, 필요에 따라 커스텀 필드나 메서드를 추가하여 직렬화할 수 있음

- 또한, serializer는 데이터 유효성 검사 기능도 제공하며, 이를 통해 클라이언트로부터 전송된 데이터의 유효성을 검증할 수 있음

 

※ 컴퓨터 과학에서 Serializer 란 ?

컴퓨터 과학에서 데이터 저장의 맥락에서 직렬화는 데이터 구조 나 객체 상태를 같은 컴퓨터 환경이나 다른 컴퓨터 환경에서 나중에 저장하고 재구성 할 수있는 형식으로 변환하는 과정입니다

Serializer 클래스 사용 예시 

from django.db import models
from rest_framework import serializers

class Book(models.Model):
		title = models.CharField(max_length=100)
		author = models.CharField(max_length=100)
		publication_date = models.DateField()

class BookSerializer(serializers.Serializer):
		title = serializers.CharField(max_length=100)
		author = serializers.CharField(max_length=100)
		publication_date = serializers.DateField()
		
def create(self, validated_data):
    return Book.objects.create(**validated_data)

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

메서드 및 인자

create() :

- Serializer 클래스를 사용하여 새로운 모델 인스턴스를 생성하는 메서드

- validated_data 인자를 사용하여 새로운 모델 인스턴스를 생성하고 반환

update() :

- Serializer 클래스를 사용하여 기존 모델 인스턴스를 업데이트하는 메서드

- instance와 validated_data 인자를 사용하여 기존 모델 인스턴스를 업데이트하고 반환

self :

- Serializer 클래스 인스턴스 자신을 의미합니다

instance :

- Serializer가 생성 또는 업데이트할 Django 모델 인스턴스

validated_data :

- Serializer를 통해 전달된 데이터의 유효성 검사를 통과한 결과