본문 바로가기
스파르타코딩 AI웹개발 3기

내일배움캠프_TIL_2022.12.02

by 청귤에이드 2022. 12. 6.

최종프로젝트 중 워크샵 상세 페이지에서 게시물을 수정하는 부분에 있어 유의해야 할 부분을 간단히 정리했습니다.

class WorkshopDetailView(APIView):
    def get(self, request, workshop_id):
        workshop = get_object_or_404(Workshop, id=workshop_id)
        serializer = WorkshopSerializer(workshop)
        return Response(serializer.data, status=status.HTTP_200_OK)

    def put(self, request, workshop_id):
        workshop = get_object_or_404(Workshop, id=workshop_id)
        if request.user == workshop.host: 
            serializer = WorkshopCreateSerializer(workshop, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response("권한이 없습니다.", status=status.HTTP_403_FORBIDDEN)

    def delete(self, request, workshop_id):
        workshop = get_object_or_404(Workshop, id=workshop_id)
        if request.user == workshop.host: 
            workshop.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
        else:
            return Response("권한이 없습니다.", status=status.HTTP_403_FORBIDDEN)

- 해당 워크샵에 대한 데이터를 workshop 인스턴스에 정리했고 이때 id=workshop_id로 불러오는 것이 용이함, 

- 정보를 요청할 때 request.user와 DB에서 id가 workshop_id인 workshop의 host(주최자)와 같은지 비교하는 로직을 사용한 점