최종프로젝트 중 워크샵 상세 페이지에서 게시물을 수정하는 부분에 있어 유의해야 할 부분을 간단히 정리했습니다.
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(주최자)와 같은지 비교하는 로직을 사용한 점
'스파르타코딩 AI웹개발 3기' 카테고리의 다른 글
| 내일배움캠프_WIL_2022.12.04 (0) | 2022.12.06 |
|---|---|
| 내일배움캠프_TIL_2022.12.05 (0) | 2022.12.06 |
| A6조 최종프로젝트 SA 제출 (22.12.01) (0) | 2022.12.01 |
| 내일배움캠프_TIL_2022.11.30 (0) | 2022.12.01 |
| 내일배움캠프_TIL_2022.11.29 (0) | 2022.12.01 |