drf django rest framework

석준·2022년 10월 15일

django

목록 보기
2/2
post-thumbnail

python기반 웹 프레임워크는 대표적으로 flask와 django가 있습니다.
django는 full-stack 웹 프레임워크로 제공하는 기능이 많아 웬만한 기능은 django가 미리 만들어 놓은 기능을 따라야합니다.
편리하기도 하지만 다소 독선적인 프레임워크로 알려져있습니다.
django 공식문서를 기반으로 적용 방법 등을 알아보겠습니다.

📌django REST framework를 사용해야하는 몇가지 이유

  1. 웹 탐색 가능 API로 개발자에게 큰 유용성 제공
  2. Oauth1a 및 OAuth2용 패키지를 포함
  3. ORM및 비ORM 데이터 소스를 모두 지원하는 직렬화
  4. 광범위한 문서 및 훌륭한 커뮤니티 지원

✅요구사항

  • python(3.6, 3.7, 3.8, 3.9, 3.10)
  • django(2.2, 3.0, 3.1, 3.2, 4.0, 4.1)

각 python및 django 시리즈의 최신 패치 및 릴리스만 공식적으로 지원합니다.

🔨설치

  1. django 프로젝트 시작
pip install Django
django-admin startproject djangoProject

1-1. pip를 통한 설치

pip install djangorestframework
pip install markdown 			# Markdown support for the browable API
pip install django-filter		# Filtering support

1-2. github 프로젝트 clone

git clone https://github.com/encode/django-rest-framework
  1. setting.py 서드파티에 추가
INSTALLED_APPS = [
  ...
  'rest_framework',
]

여기까지가 설치 및 적용입니다.
실습 예시까지 해보겠습니다.

⚡예시

간단한 모델-백엔드 API를 구성하겠습ㄴ디ㅏ.
프로젝트 데이터에 접근하기 위한 읽고 쓰기 API를 만들 것입니다.
모든 REST framework API를 위한 세팅은 REST_FRAMEWORK로 명명된 하나의 딕셔너리형태로setting.py에 작성합니다.

REST_FRAMEWORK = {
  # Django's 표준 'django.contrib.auth' 권한을 사용하거나,
  # 인증되지 않은 사용자에 대해 읽기 전용 액세스를 허용합니다.
	'DEFAULT_PERMISSION_CALSSES': [
    	'rest_framework.permission.DjangoModelPermissionOrAnonReadOnly'
    ]
}

이제 API를 만들 준비가 되었습니다.
urls.py에서 작성합니다.

from django.urls import paht, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# serializer는 API representation을 정의합니다.
class UserSerializer(serializers.HyperlinkedModelSerializer):
	class Meta:
    	model = User
        fields = ['url', 'username', 'email', 'is_staff']

# ViewSets 은 view동작을 정의합니다.
class UserViewSet(viewsets.ModelViewSet):
	queryset = User.objects.all()
    serializer_class = UserSerializer
    
    
# Routers 는 자동으로 URL을 정의해주는 쉬운 방법을 만들어 줍니다.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
    
    
# 자동 URL routing 사용해서 API를 연결합니다.
# 검색 가능한 API에 대한 로그인 URL도 포함되어 있습니다.
urlpatters = [
	path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

이제 서버를 실행시키면 http://127.0.0.1:8000/의 브라우저에서 API를 열고 새로운 'User'API를 볼 수 있습니다.

🔅레퍼런스

django-rest-framework 공식문서: https://www.django-rest-framework.org/

profile
파이썬 서버 개발자 지망생

0개의 댓글