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를 통해 전달된 데이터의 유효성 검사를 통과한 결과
'Django' 카테고리의 다른 글
[Django] Django 인증 및 권한 시스템 - permission_classes (0) | 2023.04.06 |
---|---|
[Django] RESTful API (0) | 2023.03.24 |
[Django] Serializer 인자 - self, instance, validated_data (0) | 2023.03.23 |