Django REST framework은 Django 프레임워크의 확장으로, 웹 API를 쉽게 개발할 수 있도록 도와줍니다. 당신이 Django REST framework을 사용하고 있다면, 테이블 간의 관계(One-to-One, One-to-Many, Many-to-Many 등)를 적절하게 설정해야 합니다. 이 게시물에서는 Django REST framework에서 테이블 간의 관계를 설정하는 방법을 알아보겠습니다.
1. 모델 정의하기
우선, 테이블 간의 관계를 설정하기 위해서는 모델을 정의해야 합니다. Django에서는 models.py
파일에서 모델을 정의합니다. 다음은 간단한 예시입니다.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
위 예시에서는 Author
모델과 Book
모델 사이의 One-to-Many 관계를 설정하고 있습니다.
2. 직렬화(Serialization) 설정하기
Django REST framework에서는 모델을 직렬화하여 JSON 형태로 변환해주는 Serializer 클래스를 제공합니다. 다음은 직렬화 설정 예시입니다.
from rest_framework import serializers
from .models import Author, Book
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = '__all__'
class BookSerializer(serializers.ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Book
fields = '__all__'
위 예시에서는 AuthorSerializer
와 BookSerializer
를 정의하고, BookSerializer
에서 author
필드를 AuthorSerializer
로 설정하고 있습니다. 이렇게 하면 관련된 모델의 내용도 함께 직렬화됩니다.
3. 뷰(View) 설정하기
다음으로는 뷰를 설정해야 합니다. Django REST framework에서는 뷰를 통해 API 요청에 대한 처리를 정의합니다. 다음은 뷰 설정 예시입니다.
from rest_framework import viewsets
from .models import Author, Book
from .serializers import AuthorSerializer, BookSerializer
class AuthorViewSet(viewsets.ModelViewSet):
queryset = Author.objects.all()
serializer_class = AuthorSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
위 예시에서는 AuthorViewSet
와 BookViewSet
를 정의하고, 각각의 queryset
과 serializer_class
를 설정하고 있습니다. 이렇게 설정하면 API 요청에 대한 CRUD(Create, Retrieve, Update, Delete) 기능이 자동으로 제공됩니다.
4. URL 설정하기
마지막으로 URL을 설정해야 합니다. Django REST framework에서는 URL을 통해 API 엔드포인트를 정의합니다. 다음은 URL 설정 예시입니다.
from django.urls import include, path
from rest_framework import routers
from .views import AuthorViewSet, BookViewSet
router = routers.DefaultRouter()
router.register(r'authors', AuthorViewSet)
router.register(r'books', BookViewSet)
urlpatterns = [
path('', include(router.urls)),
]
위 예시에서는 router
를 통해 AuthorViewSet
과 BookViewSet
를 등록하고, urlpatterns
에 포함시킵니다. 이렇게 설정하면 /authors/
와 /books/
로 접속하여 API 요청을 수행할 수 있습니다.
결론
이렇게 Django REST framework에서 테이블 간의 관계를 설정하는 방법을 알아보았습니다. 효과적인 테이블 관계 설정은 Django REST framework를 통해 웹 API를 가장 효율적으로 개발하는 데 도움을 줄 것입니다. 자세한 내용은 Django REST framework 공식 문서를 참조하시기 바랍니다.
참조: Django REST framework 공식 문서