Search for a command to run...

안녕하세요, 미래의 백엔드 개발자 여러분! 오늘은 **파이썬(Python)**의 대표적인 웹 프레임워크인 **장고(Django)**와 **Django REST Framework(DRF)**를 사용하여 간단하면서도 강력한 블로그 API를 만들어보는 과정을 함께하겠습니다. Python은 배우기 쉬운 문법과 강력한 생태계 덕분에 웹 개발, 데이터 분석, 인공지능 등 다양한 분야에서 사랑받고 있습니다. Django는 그중에서도 "배터리 포함(Batteries Included)" 철학을 바탕으로 웹 개발에 필요한 대부분의 기능(ORM, Admin, 인증 등)을 기본적으로 제공하여 개발자가 비즈니스 로직에만 집중할 수 있도록 돕습니다.
이 튜토리얼을 따라오시면, 여러분은 REST API의 기본 개념을 이해하고 Django를 활용하여 직접 API 서버를 구축하는 경험을 얻게 될 것입니다. 자, 그럼 시작해볼까요?
가장 먼저, 파이썬과 Django를 설치해야 합니다. 가상 환경을 사용하여 프로젝트별로 독립적인 라이브러리 의존성을 관리하는 것이 좋습니다.
# 가상환경 생성 및 활성화 (Windows는 venv\Scripts\activate)
python -m venv venv
source venv/bin/activate
# 필요한 패키지 설치
pip install django djangorestframework
설치가 완료되었다면, Django 프로젝트와 앱을 생성합니다.
# 'myblog'라는 이름의 Django 프로젝트 생성
django-admin startproject myblog
cd myblog
# 'api'라는 이름의 앱 생성
python manage.py startapp api
프로젝트가 생성되면 myblog/settings.py 파일의 INSTALLED_APPS 리스트에 방금 만든 api 앱과 rest_framework를 추가해주세요.
# myblog/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 추가한 앱
'rest_framework',
'api',
]
API를 통해 다룰 데이터의 구조를 정의할 차례입니다. 우리는 간단한 블로그 게시글을 표현하는 Article 모델을 만들어보겠습니다.
# api/models.py
from django.db import models
from django.contrib.auth.models import User
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='articles')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
모델을 정의한 후에는 데이터베이스에 변경사항을 알려주어야 합니다. 이를 *마이그레이션(Migration)*이라고 합니다.
python manage.py makemigrations
python manage.py migrate
시리얼라이저는 모델 인스턴스나 쿼리셋 같은 복잡한 데이터를 JSON, XML 등 다른 형식으로 쉽게 변환할 수 있게 해줍니다. 클라이언트와 서버가 데이터를 주고받을 때 이 시리얼라이저가 다리 역할을 합니다.
# api/serializers.py (새 파일 생성)
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['id', 'title', 'content', 'author', 'created_at', 'updated_at']
ModelSerializer를 사용하면 모델에 정의된 필드를 바탕으로 시리얼라이저를 매우 간단하게 만들 수 있습니다.
이제 실제 API의 로직을 처리하는 뷰를 작성할 차례입니다. DRF의 ViewSet을 사용하면 CRUD(생성, 조회, 수정, 삭제)에 해당하는 API 엔드포인트를 매우 효율적으로 작성할 수 있습니다.
# api/views.py
from rest_framework import viewsets
from .models import Article
from .serializers import ArticleSerializer
class ArticleViewSet(viewsets.ModelViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
정말 간단하죠? ModelViewSet은 게시글 목록 조회, 특정 게시글 조회, 생성, 수정, 삭제에 해당하는 모든 로직을 기본적으로 제공합니다.
이제 이 뷰셋을 URL과 연결해줍시다. DRF의 Router를 사용하면 이 과정 또한 자동화할 수 있습니다.
# api/urls.py (새 파일 생성)
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ArticleViewSet
router = DefaultRouter()
router.register(r'articles', ArticleViewSet)
urlpatterns = [
path('', include(router.urls)),
]
마지막으로, 프로젝트의 최상위 urls.py에 api/urls.py를 연결합니다.
# myblog/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls')), # api 앱의 URL 추가
]
모든 설정이 끝났습니다! 이제 개발 서버를 실행하고 API가 잘 작동하는지 확인해봅시다.
python manage.py runserver
웹 브라우저나 Postman 같은 API 테스트 도구를 사용하여 http://127.0.0.1:8000/api/articles/로 접속해보세요. DRF가 제공하는 멋진 "Browsable API" 화면을 통해 직접 데이터를 생성하고 조회하는 등 API를 테스트해볼 수 있습니다.
축하합니다! 여러분은 방금 Python과 Django를 사용하여 완벽하게 동작하는 REST API 서버를 구축했습니다. 비록 간단한 예제였지만, 이 과정을 통해 Django와 DRF의 강력함과 편리함을 느끼셨을 겁니다.
여기서 멈추지 마세요. 다음 단계로는 아래와 같은 주제들을 탐색해보는 것을 추천합니다.
꾸준히 학습하고 프로젝트를 진행하다 보면, 어느새 여러분도 멋진 서비스를 만들어내는 백엔드 개발자가 되어있을 겁니다. 화이팅!
로그인 후 댓글을 작성할 수 있습니다.