본문 바로가기
TIL(Daily)/ETC

Wed/23/Nov/22 유화프로젝트 -2

by Hawie 2022. 11. 24.

오늘은 유화 프로젝트 첫날이이다.

 

어제 상의한 내용을 바탕으로 각자 맡은  일 을 진행 하였다.

 

나는 백엔드 중에서는 댓글-작성,수정,삭제  담당이였다.

 

그리고 구현 완료 후 프론트엔드 를 먼저 진행하는 역활 이 였다.

 

그래서 백엔드 부분 에 서는 많은  부분 을 맡지는 않았다.  

 

이번 프로젝트 에서 구현 하는 백엔드 기능 은 다행이도 해본적 있는 기능이 많아

 

어렵지는 않았지만, 프론트엔드 쪽은 할일 많아 그쪽 을 비중있게 진행하는 중이다.

 

urls.py

    path('<int:feed_id>/comment/', views.FeedCommentView.as_view(), name = 'feed_comment_view'),   # 댓글 작성
    path('<int:feed_id>/comment/<int:comment_id>/', views.FeedCommentDetailView.as_view(), name = 'feed_comment_detail_view'), # 댓글 수정, 삭제
    
    
    
   
    
 views.py
 
 
 class FeedCommentView(APIView): # 댓글 등록 View (성창남)
    
    permission_classes = [permissions.IsAuthenticated]
    authentication_classes = [JWTAuthentication]

    def post(self, request, feed_id): # 댓글 등록
        serializer = FeedCommentSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(user=request.user, feed_id=feed_id)
            return Response({"message":"댓글 등록했습니다!"}, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        
            
class FeedCommentDetailView(APIView):  #댓글(수정,삭제) View (성창남)
    permission_classes = [permissions.IsAuthenticated]
    authentication_classes = [JWTAuthentication]

    def put(self, request, feed_id, comment_id): # 댓글 수정
        comment = get_object_or_404(Comment, id=comment_id)
        if request.user == comment.user:
            serializer = FeedCommentSerializer(comment, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response({"message":"댓글 수정했습니다!"}, status=status.HTTP_200_OK)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message":"권한이 없습니다!"}, status=status.HTTP_403_FORBIDDEN)
            
    def delete(self, request, feed_id, comment_id): # 댓글 삭제
        comment = get_object_or_404(Comment, id= comment_id)
        if request.user == comment.user:
            comment.delete()
            return Response({"message":"댓글 삭제했습니다!"}, status=status.HTTP_204_NO_CONTENT)
        else:
            return Response({"message":"권한이 없습니다!"}, status=status.HTTP_403_FORBIDDEN)     
        
   
   serializers.py
   
   
   class FeedCommentSerializer(serializers.ModelSerializer): # 댓글 작성 serializer

    user = serializers.SerializerMethodField()
    # tags = TagListSerializerField()

    def get_user(self, obj):
        return obj.user.email
    
    class Meta:

        model = Comment
        fields='__all__'

댓글