DJango 서버개발, Django REST Framework 소개 및 설치

Django는 파이썬 프로그래밍 언어로 작성된 강력한 웹 프레임워크로, 효율적이고 빠른 웹 애플리케이션 개발을 가능하게 합니다. Django REST Framework(DRF)는 Django 웹 프레임워크와 함께 사용되는 라이브러리로, RESTful API를 쉽게 구축할 수 있게 해줍니다. 본 글에서는 Django REST Framework의 기본 개념부터 설치 방법, 간단한 예제까지 다룰 것입니다.

Django와 Django REST Framework의 개요

Django는 MTV(Model-Template-View) 아키텍처를 따르는 웹 프레임워크로, 빠른 개발과 간편한 유지 관리의 장점을 제공합니다. Django의 주요 특징으로는 다음과 같은 것들이 있습니다:

  • 강력한 관리자 인터페이스: Django는 기본적으로 자동 생성되는 관리 인터페이스를 제공합니다.
  • ORM: Django의 객체 관계 매핑(ORM)을 사용하면 데이터베이스와 상호 작용하는 것이 쉽습니다.
  • 보안: Django는 CSRF 보호, SQL 인젝션 방지 등 다양한 보안 기능을 제공합니다.
  • 배터리 포함: 많은 기능이 기본으로 제공되어 추가 라이브러리 없이도 다양한 기능을 구현할 수 있습니다.

Django REST Framework의 필요성

현대 웹 애플리케이션은 클라이언트와 서버 간의 데이터 통신을 위해 RESTful API를 활용하는 경우가 많습니다. RESTful API는 클라이언트와 서버 간의 상호작용을 표준화된 방식으로 처리하여, 다양한 클라이언트 애플리케이션에서 서버 데이터를 손쉽게 사용할 수 있도록 해줍니다.

Django REST Framework는 Django를 위한 강력하고 유연한 웹 API 프레임워크로, REST API를 구축하는 데 유용한 기능을 제공합니다. DRF를 사용하면:

  • 검증, 직렬화, 인증, 권한 부여와 같은 API 구축에 필요한 다양한 기능을 쉽게 구현할 수 있습니다.
  • 유연한 응답 및 요청 포맷을 지원하여 JSON 및 XML과 같은 다양한 형식으로 데이터를 전달할 수 있습니다.
  • API 뷰를 통한 복잡한 로직을 단순화하여 개발 시간을 줄일 수 있습니다.

Django REST Framework 설치하기

이제 Django REST Framework를 설치해 보겠습니다. 명령어 인터페이스에서 아래의 절차를 따라 진행하세요.

1. Python 설치

먼저, Python이 설치되어 있어야 합니다. Python 3.6 이상이 권장됩니다. 터미널 또는 명령 프롬프트에 다음 명령어를 입력하여 Python이 설치되어 있는지 확인하세요:

python --version

Python이 설치되어 있지 않다면, Python 공식 웹사이트에서 다운로드 후 설치하세요.

2. 가상 환경 설정

가상 환경을 생성하여 의존성을 격리합니다. 프로젝트 폴더를 생성한 후 해당 폴더로 이동하여 아래 명령어로 가상 환경을 생성하세요:

mkdir myproject
cd myproject
python -m venv venv

가상 환경을 활성화합니다:

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate

3. Django 및 Django REST Framework 설치

다음으로 Django와 Django REST Framework를 설치합니다. 아래 명령어를 입력하세요:

pip install django djangorestframework

설치가 완료되면, 설치된 패키지를 확인합니다:

pip list

여기서 djangodjangorestframework가 포함되어 있는지 확인합니다.

Django 프로젝트 생성 및 DRF 설정

이제 Django 프로젝트를 생성해 보겠습니다. 다음과 같은 명령어로 프로젝트를 생성합니다:

django-admin startproject myapi

프로젝트 디렉토리로 이동합니다:

cd myapi

1. 앱 생성

애플리케이션을 생성하여 기능을 모듈화합니다. 아래 명령어를 입력하세요:

python manage.py startapp myapp

2. settings.py 수정

이제 생성한 앱과 Django REST Framework를 설정 파일에 추가합니다. myapi/settings.py 파일을 열고 INSTALLED_APPS 리스트에 다음 두 줄을 추가합니다:

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp',
]

간단한 API 예제

Django REST Framework를 사용하여 간단한 API를 생성해보겠습니다. 이 예제에서는 사용자 정보를 관리하는 API를 구현합니다.

1. 모델 생성

먼저, myapp/models.py에 사용자 정보를 저장할 모델을 생성합니다:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(unique=True)

    def __str__(self):
        return self.name

2. 마이그레이션 수행

모델을 정의한 후 데이터베이스에 반영하기 위해 마이그레이션을 수행합니다:

python manage.py makemigrations
python manage.py migrate

3. 직렬화기 생성

이제 모델 데이터를 JSON으로 변환할 직렬화기를 작성합니다. myapp/serializers.py 파일을 생성하고 아래의 내용을 추가합니다:

from rest_framework import serializers
from .models import User

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

4. 뷰 생성

API 요청을 처리할 뷰를 생성합니다. myapp/views.py 파일을 열고 아래와 같이 수정합니다:

from rest_framework import generics
from .models import User
from .serializers import UserSerializer

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

5. URL 매핑

생성한 뷰를 URL에 매핑합니다. myapp/urls.py 파일을 생성한 후 아래와 같이 작성합니다:

from django.urls import path
from .views import UserList

urlpatterns = [
    path('users/', UserList.as_view(), name='user-list'),
]

다음으로, myapi/urls.py 파일을 열고 include 함수를 사용하여 myapp.urls를 포함시킵니다:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('myapp.urls')),
]

6. API 서버 실행

모든 설정이 완료되었습니다. 아래 명령어로 서버를 실행합니다:

python manage.py runserver

브라우저에서 http://127.0.0.1:8000/api/users/에 접속하여 생성한 API를 확인할 수 있습니다.

결론

이번 글에서는 Django REST Framework의 기본 개념과 설치 방법, 간단한 API 생성 과정을 살펴보았습니다. Django와 Django REST Framework를 통해 강력하고 유연한 웹 애플리케이션을 개발할 수 있습니다. 더 나아가, 사용자 인증, 필터링, 페이징 등의 기능을 추가해 나가면서 실제 서비스에 적합한 API를 만들어 나가길 바랍니다.

앞으로 Django와 Django REST Framework를 활용한 다양한 예제와 고급 주제들을 다룰 예정이니 많은 기대 바랍니다!