Django REST framework은 웹 애플리케이션에서 API를 쉽게 개발하고 관리할 수 있는 도구입니다. 댓글 좋아요 기능을 구현하기 위해서는 몇 가지 단계를 거쳐야 합니다. 이 블로그 포스트에서는 Django REST framework에서 댓글 좋아요 처리 방법을 알아보겠습니다.
1. 댓글 모델 생성
가장 먼저 댓글 모델을 생성해야 합니다. 댓글 모델에는 댓글 내용, 작성자, 작성일자 등의 필드가 포함되어야 합니다. 댓글에는 댓글을 작성한 사용자의 좋아요 여부에 대한 정보도 필요합니다. 따라서 이를 위한 is_liked
필드를 추가할 수 있습니다.
from django.db import models
from django.contrib.auth.models import User
class Comment(models.Model):
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
is_liked = models.BooleanField(default=False)
2. 댓글 Serializer 생성
다음으로 댓글 Serializer를 생성해야 합니다. Serializer는 모델 데이터를 JSON 형식으로 변환하거나 JSON 데이터를 모델 형식으로 변환할 수 있게 해줍니다. 댓글의 좋아요 여부를 갱신하기 위한 toggle_like
메소드를 추가할 수 있습니다.
from rest_framework import serializers
from .models import Comment
class CommentSerializer(serializers.ModelSerializer):
author = serializers.StringRelatedField()
class Meta:
model = Comment
fields = '__all__'
def toggle_like(self, instance):
instance.is_liked = not instance.is_liked
instance.save()
3. 댓글 ViewSet 생성
ViewSet는 Django REST framework에서 제공하는 기능으로, API의 CRUD 작업을 처리할 수 있게 해줍니다. 댓글을 좋아요 토글하기 위한 toggle_like
액션을 추가한 ViewSet을 생성해야 합니다.
from rest_framework.viewsets import ModelViewSet
from .models import Comment
from .serializers import CommentSerializer
class CommentViewSet(ModelViewSet):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
@action(methods=['put'], detail=True)
def toggle_like(self, request, pk=None):
comment = self.get_object()
serializer = self.get_serializer(comment)
serializer.toggle_like(comment)
return Response(serializer.data)
4. URL 설정
마지막으로, URL 설정을 해야 합니다. ViewSet을 URL에 매핑하고 토글되는 좋아요 액션을 추가해야 합니다.
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import CommentViewSet
router = DefaultRouter()
router.register('comments', CommentViewSet)
urlpatterns = [
path('', include(router.urls)),
]
이제 Django REST framework에서 댓글 좋아요를 처리하는 기능이 준비되었습니다. 이제 API를 통해 댓글의 좋아요를 토글할 수 있습니다.
참고 자료
- Django REST framework 공식 문서: https://www.django-rest-framework.org/
- Django 공식 문서: https://docs.djangoproject.com/
주의사항: 이 예시 코드는 단순한 예시일 뿐이며, 실제 프로젝트에는 추가적인 작업과 예외처리가 필요할 수 있습니다. 프로젝트에 따라 코드를 수정하여 사용하세요.