Skip to content

Commit

Permalink
Fix: parser 클래스 지정하여 이미지 뷰 수정 완료.
Browse files Browse the repository at this point in the history
  • Loading branch information
joy-river committed Aug 17, 2024
1 parent 8c8545b commit 99e48c3
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 44 deletions.
2 changes: 1 addition & 1 deletion KUA/student/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()),
]
87 changes: 44 additions & 43 deletions KUA/student/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
# 이메일 코드 전송 기능


Expand Down Expand Up @@ -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)

0 comments on commit 99e48c3

Please sign in to comment.