DRF(Django Rest Framework)의 개요 및 기본 설정

UniverSpace·2023년 2월 26일
1
post-thumbnail

Django Rest Framework에 대한 개요와 기본 설정법에 대한 내용입니다.

DRF?

Django Rest Framework(DRF)는 Python 웹 프레임워크인 Django를 기반으로 만들어진 RESTful API 개발을 위한 프레임워크입니다. DRF는 Django에서 제공하는 기능을 활용하여 RESTful API를 보다 쉽게 개발할 수 있도록 도와줍니다.

주요 기능

  1. Serialization
    DRF는 Django 모델을 JSON, XML 등 다양한 형식의 데이터로 쉽게 변환할 수 있도록 serialization 기능을 제공합니다.

  2. Authentication & Permissions
    DRF는 다양한 인증 방식을 지원하며, 특정 API 요청에 대한 권한 설정을 할 수 있습니다.

  3. Viewsets & Routers
    DRF는 viewsets와 routers를 통해 API view를 보다 쉽게 개발할 수 있습니다. Viewsets는 Django의 model을 기반으로 CRUD(Create, Retrieve, Update, Delete) API를 자동으로 생성해주는 기능을 제공합니다. Routers는 viewsets와 URL을 연결해주는 기능을 제공합니다.

  4. Pagination & Throttling
    DRF는 API 결과를 페이지로 나누어 반환하거나, API 요청에 대한 쓰로틀링(Throttling)을 적용할 수 있도록 기능을 제공합니다.

  5. Exception Handling
    DRF는 API 요청에 대한 예외 처리를 자동으로 처리할 수 있도록 기능을 제공합니다.

위와 같은 기능을 제공하여, DRF는 RESTful API 개발을 보다 쉽고 빠르게 할 수 있도록 도와줍니다. 또한, Django의 확장성과 호환성을 유지하면서 API 개발을 할 수 있어, Django 사용자들에게 더욱 친숙하게 다가올 수 있습니다.

기본 설정

Django Rest Framework의 초기 세팅에 대해 알아보겠습니다.

  1. 가상환경 설정하기

먼저, 가상환경을 설정합니다. 가상환경을 설정하면 프로젝트 별로 필요한 패키지를 설치하고 관리할 수 있습니다.

$ python -m venv myvenv
$ source myvenv/bin/activate
  1. Django 설치하기
    다음으로, Django를 설치합니다.
$ pip install django
  1. Django Rest Framework 설치하기
    DRF를 설치합니다.
$ pip install djangorestframework
  1. 프로젝트 생성하기
    Django 프로젝트를 생성합니다.
$ django-admin startproject myproject
  1. 앱 생성하기
    Django 앱을 생성합니다.
$ cd myproject
$ python manage.py startapp myapp
  1. settings.py 수정하기
    다음으로, settings.py 파일을 수정합니다. INSTALLED_APPS'rest_framework''myapp'을 추가합니다.
...
INSTALLED_APPS = [
    ...
    'rest_framework', # 추가
    'myapp',
]
...
  1. serializers.py 작성하기
    다음으로, serializers.py 파일을 작성합니다. serializers.py는 모델 객체를 JSON 형태로 변환하는 역할을 합니다.
from rest_framework import serializers
from .models import MyModel

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'
  1. views.py 작성하기
    다음으로, views.py 파일을 작성합니다. views.py는 API의 동작을 정의하는 역할을 합니다.
from rest_framework import generics
from .models import MyModel
from .serializers import MyModelSerializer

class MyModelList(generics.ListCreateAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

class MyModelDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer
  1. urls.py 작성하기
    다음으로, urls.py 파일을 작성합니다. urls.py는 URL과 뷰를 연결하는 역할을 합니다.
from django.urls import path
from .views import MyModelList, MyModelDetail

urlpatterns = [
    path('mymodel/', MyModelList.as_view()),
    path('mymodel/<int:pk>/', MyModelDetail.as_view()),
]
  1. migrate하기
    마지막으로, migrate를 수행합니다.
$ python manage.py makemigrations
$ python manage.py migrate
profile
DRF Backend Engineer

0개의 댓글