[코딩공부] 41일차(5/11)

성철민·2023년 5월 12일
0

배움

목록 보기
42/42

내일배움캠프

Django REST framework 심화 팀프로젝트

class BiddingView(APIView):
    permission_classes = [permissions.IsAuthenticated]
    def patch(self, request, article_id):
        article = get_object_or_404(Article, id=article_id)
        if timezone.now() > article.finished_at:
            return Response({'message': "경매가 종료된 상품입니다."}, status=status.HTTP_400_BAD_REQUEST)
        elif article.user == request.user:
            return Response({'message': "게시자는 경매에 참여할 수 없습니다."}, status=status.HTTP_400_BAD_REQUEST)
        elif article.max_user == request.user:
            return Response({'message': "최고입찰자가 재입찰 할 수 없습니다."}, status=status.HTTP_400_BAD_REQUEST)
        elif article.max_point >= int(request.data['max_point']):
            return Response({'message': "최고가보다 낮습니다."}, status=status.HTTP_400_BAD_REQUEST)
        else:
            serializer = BiddingSerializer(article, data=request.data)
            if serializer.is_valid():
                serializer.save(max_user=request.user)
                return Response(serializer.data)
            else:
                return Response({"message": "권한이 없습니다."}, status=status.HTTP_403_FORBIDDEN)

경매 기능을 구현중이다.
실시간 경매 기능을 구현하기는 아직 까다롭기 때문에 트리거는 유저가 들어올 때 새로 업데이트하는 걸로 생각했다. 유저가 메인페이지에 들어와 get요청을 날리면 페이지를 보여줌과 동시에 경매가 끝난 아이템이 있는지 체크하고 상태를 바꿔준다. 그리고 상태가 바뀐 아이템이 있다면 그 아이템을 체크해서 입찰자를 정해준다.

Think

오늘 내에 마무리 짓는다!

profile
developer

0개의 댓글