From 99e48c3dec30cfaff8ff004b77125d85e3f1f222 Mon Sep 17 00:00:00 2001 From: Joyriver-laptop Date: Sat, 17 Aug 2024 20:53:17 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20parser=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=95=98=EC=97=AC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EB=B7=B0=20=EC=88=98=EC=A0=95=20=EC=99=84=EB=A3=8C?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KUA/student/urls.py | 2 +- KUA/student/views.py | 87 ++++++++++++++++++++++---------------------- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/KUA/student/urls.py b/KUA/student/urls.py index 49d06e7..b236525 100644 --- a/KUA/student/urls.py +++ b/KUA/student/urls.py @@ -15,5 +15,5 @@ path('get-now-points/', views.GetNowPointView().as_view()), path('user-info/', views.UserStudentInfoView.as_view()), path('get-point-history/', views.GetPointHistoryView.as_view()), - # path('image/', views.ImageView().as_view()), + path('image/', views.ImageView().as_view()), ] \ No newline at end of file diff --git a/KUA/student/views.py b/KUA/student/views.py index 591e441..ab32e92 100644 --- a/KUA/student/views.py +++ b/KUA/student/views.py @@ -16,7 +16,7 @@ from datetime import timedelta from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi - +from rest_framework.parsers import MultiPartParser, FormParser # 이메일 코드 전송 기능 @@ -481,45 +481,46 @@ def get(self, request): return Response("Student not found", status=400) -# class ImageView(APIView): -# authentication_classes = [TokenAuthentication] -# permission_classes = [IsAuthenticated] -# serializer_class = serializers.ImageSerializer - -# @swagger_auto_schema( -# operation_summary="이미지 생성하기", -# operation_description="이미지 이름, 태그, 이미지 데이터를 생성합니다.", -# manual_parameters=[ -# openapi.Parameter('name', openapi.IN_FORM, type=openapi.TYPE_STRING, description='이미지 이름'), -# openapi.Parameter('tag', openapi.IN_FORM, type=openapi.TYPE_STRING, description='이미지 태그'), -# openapi.Parameter('image_uploads', openapi.IN_FORM, type=openapi.TYPE_FILE, description='이미지 파일 업로드'), -# ], -# responses={ -# 201: openapi.Response(description="Success"), -# 400: openapi.Response(description="Rejected") -# } -# ) -# def post(self, request, *args, **kwargs): -# name = request.data.get('name') -# tag = request.data.get('tag') -# image_uploads = request.FILES.getlist('image_uploads', []) - -# # 이미지가 여러 개 업로드된 경우 에러 반환 -# if len(image_uploads) > 1: -# return Response({"error": "Only one image can be uploaded at a time."}, status=400) - -# # 이미지가 없는 경우 에러 반환 -# if not image_uploads: -# return Response({"error": "No image uploaded."}, status=400) - -# data = { -# "name": name, -# "tag": tag, -# "image": image_uploads[0], # 이미지를 직렬화할 데이터에 포함시킴 -# } - -# serializer = self.get_serializer(data=data) -# serializer.is_valid(raise_exception=True) -# serializer.save() # 이미지를 포함하여 저장 - -# return Response(serializer.data, status=201) +class ImageView(APIView): + authentication_classes = [TokenAuthentication] + permission_classes = [IsAuthenticated] + serializer_class = serializers.ImageSerializer + parser_classes = [MultiPartParser, FormParser] + + @swagger_auto_schema( + operation_summary="이미지 생성하기", + operation_description="이미지 이름, 태그, 이미지 데이터를 생성합니다.", + manual_parameters=[ + openapi.Parameter('name', openapi.IN_FORM, type=openapi.TYPE_STRING, description='이미지 이름'), + openapi.Parameter('tag', openapi.IN_FORM, type=openapi.TYPE_STRING, description='이미지 태그'), + openapi.Parameter('image_uploads', openapi.IN_FORM, type=openapi.TYPE_FILE, description='이미지 파일 업로드'), + ], + responses={ + 201: openapi.Response(description="Success"), + 400: openapi.Response(description="Rejected") + } + ) + def post(self, request, *args, **kwargs): + name = request.data.get('name') + tag = request.data.get('tag') + image_uploads = request.FILES.getlist('image_uploads', []) + + # 이미지가 여러 개 업로드된 경우 에러 반환 + if len(image_uploads) > 1: + return Response({"error": "Only one image can be uploaded at a time."}, status=400) + + # 이미지가 없는 경우 에러 반환 + if not image_uploads: + return Response({"error": "No image uploaded."}, status=400) + + data = { + "name": name, + "tag": tag, + "image": image_uploads[0], # 이미지를 직렬화할 데이터에 포함시킴 + } + + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() # 이미지를 포함하여 저장 + + return Response(serializer.data, status=201)