티스토리 뷰

Django

[Django] DRF - Django Rest Framework

Gray__ 2022. 1. 11. 23:22

Django Rest Framework

Django 안에서 RESTful API 서버를 쉽게 구출할 수 있도록 도와주는 오픈소스 라이브러리

 

  • 웹 브라우저 API는 개발자들에게 유용성을 가져다 준다
  • Serialize 기능 제공 (DB Data -> JSON)
  • Serialization은 ORM과 non-ORM 데이터 소스를 모두 지원
  • View를 커스터마이징 해서 사용할 수 있다
  • 관련 도큐먼트가 많다

DRF의 큰 기능은 Models를 serializers로 변환하는 것

 

- Serializer(직렬화)

Serialize: 추상적인 Object를 구체적이고, 저장가능하고, 전송가능한 텍스트 파일로 바꿔주는 것

 

말 그대로 직렬화하는 클래스로서, 사용자의 DB안에 사용자 프로필 사진, 이메일, 이름, 성별이 있다고 가정하면 사용자 모델 인스턴스를 JSON 형태 혹은 Dictionary 형태로 직렬화 할 수 있다.

 

왜 직렬화를 하는 것일까?

 

Object는 메모리에 존재하고, 추장적인데 비해서 String or bytes 데이터는 드라이브에 저장 할 수 있고,

통신선으로 전송도 가능하기 때문이다.

 

 

 

간단한 Serialize 과정

from django.db import models

class User(models.Model):
	id = mod
    	email = models.EmailField()
    	password = models.CharField(max_length=1000, null=True)
    
    def __str__(self):
    	return self.email
from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
	class Meta:
    		model = User
        	fields = '__all__'

 

첫 번째 코드블럭은 Serialize를 하지 않은 Model의 코드이다

 

두 번째 코드블럭을 보면 UserSerializer라는 클래스를 생성한 후 ModelSerializer를 상속한다

ModelSerializer 클래스를 사용하면 Model(User)에 정의한 필드에 해당하는 값을 Serializer 할 수 있다.

 

 

 

[DRF 학습 포인트]

  • General Serializer와 ModelSerializer의 차이는 무엇인가?
  • ModelSerializer에서 추가할 필드와 다른 모델을 참조하는 필드는 각 관계별(1:1, 1:N, N:N)로 어떻게 정의해야 하는가?
  • GenericView+Mixin VS Concrete View는 각각 코드의 처리 로직이 어떻게 되는가?
  • Concrete View 작성 시, override는 어떤 경우에 해야 하는가?

 

댓글