DRF
-
[Django] DRF Router(라우터) 동작 원리파이썬/Django 2022. 2. 13. 22:42
들어가며 DRF의 대표 클래스(ViewSet, Serializer, Router)중 하나인 Router의 종류와 동작원리를 알아본다. Router는 간단하고 빠르게 자동으로 url 라우팅을 할 수 있도록 해준다. from rest_framework import routers from apps.account. import views router = routers.SimpleRouter() router.register(r'users', views.UserViewSet) urlpatterns = router.urls 위와 같은 코드를 작성하면 ^users/$ ^users/{int: lookup}/$ 의 url패턴이 자동으로 생성된다. DRF에는 SimpleRouter, DefaultRouter 두 가지를 제공..
-
[Django] DRF Serializer(시리얼라이저) 동작 원리파이썬/Django 2022. 1. 24. 22:44
들어가며 DRF에서 주요 클래스(ViewSet, Router, Serializer) 중 하나인 Serializer의 동작 원리를 살펴본다. Serializer의 기능은 세 가지가 있는데 다음과 같다. 모델 객체 → 파이썬 네이티브 타입인 dict 타입 객체로 직렬화 dict 타입의 데이터를 validation dict 타입 → 모델 객체로 역 직렬화 validation 기능은 주로 역 직렬화 전에 dict 타입의 데이터를 검증해주는 기능으로 사용된다. 이 Seirlaizer의 세 기능을 각각 어떻게 동작하는지 알아본다. 1. Model → dict class UserSerializer(serializers.Serializer): username = serializers.CharField() passwor..
-
pydantic이란? (DRF Serializer를 대체할 수 있을까?)파이썬/Django 2021. 12. 14. 22:45
들어가며 pydantic은 타입 애너테이션을 사용해서 데이터를 검증하고 설정들을 관리하는 라이브러리이다. pydantic은 런타임 환경에서 타입을 강제하고 타입이 유효하지 않을 때 에러를 발생시켜준다. FastAPI, Project Jupyter, Microsoft, AWS 등 많은 곳에서 사용된다. pydantic의 기본과 간단한 사용법을 알아보고 DRF Serializer과 바교해보자 한눈에 보기 from datetime import datetime from typing import List, Optional from pydantic import BaseModel class User(BaseModel): id: int name = '홍길동' date_joined: Optional[datetime] =..
-
[Django] RestFramework 페이지네이션 종류파이썬/Django 2021. 5. 5. 23:32
모든 DRF Pagination 추상 클래스 BasePagination을 상속 받는다. 1. PageNumberPagination page_query_param과 page_size_query_param을 사용해서 페이지네이션하는 가장 기본적인 방법 기본적으로 장고의 Paginator를 사용한다. 주어진 쿼리셋에서 [(페이지넘버 - 1) * 페이지사이즈:(페이지넘버 - 1) * 페이지사이즈 + 페이지사이즈] 를 슬라이싱하여 페이지네이션된 쿼리셋을 반환한다. 데이터를 조회할 때 select * from article limit 10 offset 20 같은 식으로 조회를 한다. 따라서 쿼리에서 limit은 페이지사이즈가 되고 offset은 (페이지넘버 -1) * 페이지사이즈 가 된다. 2. LimitOffse..