[python] Django REST framework에서의 댓글 기능 처리 방법

Django REST framework을 사용하여 댓글 기능을 구현하는 방법에 대해 알아보겠습니다. 댓글 기능은 사용자들이 게시물에 대해 의견이나 피드백을 남길 수 있는 기능을 의미합니다. 이를 구현하기 위해 다음과 같은 단계를 따를 수 있습니다.

1. Comment 모델 만들기

먼저, Comment 모델을 만들어야 합니다. 해당 모델은 댓글 내용과 작성자, 게시물과의 관계 등을 저장할 수 있어야 합니다. 예를 들어, 다음과 같이 Comment 모델을 정의할 수 있습니다.

from django.db import models

class Comment(models.Model):
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

위의 코드에서 content는 댓글 내용을 저장하는 필드이고, author는 댓글 작성자를 저장하는 필드입니다. post는 댓글이 속하는 게시물을 저장하는 필드입니다. 마지막으로 created_at은 댓글 작성일을 저장하는 필드입니다.

2. Comment 시리얼라이저 생성하기

댓글을 생성, 수정, 삭제하는 작업을 위해 Comment 모델에 대한 시리얼라이저를 생성해야 합니다. 시리얼라이저는 JSON 형태로 데이터를 주고받을 수 있도록 해줍니다. 예를 들어, 다음과 같이 CommentSerializer를 정의할 수 있습니다.

from rest_framework import serializers

class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ['id', 'content', 'author', 'post', 'created_at']

위의 코드에서 CommentSerializerComment 모델에 대한 시리얼라이저를 정의하고 있습니다. 필요한 필드들을 fields 리스트에 명시해줍니다.

3. Comment 뷰셋 생성하기

댓글에 대한 CRUD(Create, Read, Update, Delete) 작업을 처리하기 위해 Comment 모델에 대한 뷰셋을 생성해야 합니다. 뷰셋은 특정 API 엔드포인트에 대한 작업을 수행하는 데 사용됩니다. 예를 들어, 다음과 같이 CommentViewSet을 정의할 수 있습니다.

from rest_framework import viewsets

class CommentViewSet(viewsets.ModelViewSet):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer

위의 코드에서 CommentViewSetComment 모델에 대한 뷰셋을 정의하고 있습니다. queryset은 뷰셋이 사용할 데이터베이스 쿼리셋을 지정하고, serializer_class는 사용할 시리얼라이저 클래스를 지정합니다.

4. URL 매핑 설정하기

마지막으로, Comment 뷰셋을 API URL에 매핑해야 합니다. 이를 위해 urls.py 파일에 다음과 같이 URL 매핑 설정을 추가할 수 있습니다.

from django.urls import include, path
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'comments', CommentViewSet)

urlpatterns = [
    path('api/', include(router.urls)),
    # 다른 URL 매핑 설정들...
]

위의 코드에서 router.register() 함수를 사용하여 CommentViewSet을 URL에 등록하는 것을 볼 수 있습니다. 위의 예제에서는 /api/comments/ 경로에 댓글에 대한 작업을 수행할 수 있게 됩니다.

이제 Django REST framework를 사용하여 댓글 기능을 처리하는 방법에 대해 알아보았습니다. 이를 기반으로 필요한 추가적인 기능을 구현하거나 개선할 수 있습니다.

참고 자료