티스토리 뷰

파이썬/DRF API Guide

2. Django - response에 대하여

글을 쓰는 개발자 2021. 6. 24. 20:37
반응형

요청과 그에 대한 응답

 

device에 주목

 

class BlogView(APIView):
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request):
        res = BlogSerializer(data=request.data)
        if not res.is_valid():
            return Response({'succsess': False}, status=status.HTTP_400_BAD_REQUEST)
        title = res.validated_data['title']
        data = Blog.objects.create(userId=request.user, title=title)
        print(type(Blog.objects.filter(id=data.id)))
        return Response({	'success': True, \
        			'data': checkSerializer(Blog.objects.filter(id=data.id), many=True).data},\ 
        		status=status.HTTP_200_OK,headers={'device':'laptop'})

위의 예시에서 data는 { success ...} 부분이고 status는 status.HTTP_200_OK 그리고 headers는 { 'device':'laptop'}부분이다. 

만일 HttpResponse로 응답을 받게 된다면 어떻게 될까?

class BlogView(APIView):
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request):
        ...
        return HttpResponse({'success':True,'data': checkSerializer(Blog.objects.filter(id=data.id), many=True).data})

위의 사진에 대한 설명

결과는 우리가 원하는 형태의 값으로 전달되지 않는다는 것을 알 수 있다.

위의 영어를 읽어보면 알겠지만 Response는 파이썬 자료구조로 해당 값을 전달 할 수 있지만 HttpResponse는 그렇지 못한다는 것을 알 수 있다.(그러므로 Response를 쓰자!!)

 

Response의 가장 큰 장점은 여러개의 콘텐트 타입을 반환할 수 있다는 것이 장점이다.

 

 

class BlogView(APIView):
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request):
        ...
        response = Response({'success': True, 'data': checkSerializer(Blog.objects.filter(id=data.id), many=True).data}, \
                        status=status.HTTP_200_OK,headers={'device':'laptop'})
        response['language']='djangorestframework' ##headers를 추가하는 방법2번째
        return response

 

반응형

'파이썬 > DRF API Guide' 카테고리의 다른 글

1. Django request 구조 파악하기  (0) 2021.06.24
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함