티스토리 뷰

파이썬/DRF API Guide

1. Django request 구조 파악하기

글을 쓰는 개발자 2021. 6. 24. 19:42
반응형

요청 값(request value)

 

json web token 사용

views.py 코드 일부분

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

    def post(self, request):
        print("request",request)
        print("request.data: ",request.data)
        print("request.data의 타입: ",type(request.data))
        print("request.FILES: ",request.FILES)
        print("request.FILES의 타입: ",type(request.FILES))
        print("request.method: "+str(request.method))
        print("request.content_type: ",request.content_type)
        print("request.stream: ",request.stream)
        print("****만약에 인증이 되어있다면****")
        print("request.user: ",request.user)
        print("request.auth: "+str(request.auth))
        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']
        Blog.objects.create(userId=request.user,title=title)
        return Response({'success': True}, status=status.HTTP_200_OK)

 

결과

request <rest_framework.request.Request: POST '/api/blog'>
request.data:  <QueryDict: {'title': ['hi'], 'images': [<TemporaryUploadedFile: IMG_1240.jpg (image/jpeg)>, <TemporaryUploadedFile: IMG_1241.jpg (image/jpeg)>]}>
request.data의 타입:  <class 'django.http.request.QueryDict'>
request.FILES:  <MultiValueDict: {'images': [<TemporaryUploadedFile: IMG_1240.jpg (image/jpeg)>, <TemporaryUploadedFile: IMG_1241.jpg (image/jpeg)>]}>
request.FILES의 타입:  <class 'django.utils.datastructures.MultiValueDict'>
request.method: POST
request.content_type:  multipart/form-data; boundary=--------------------------438768347583439112809322
request.stream:  <WSGIRequest: POST '/api/blog'>
****만약에 인증이 되어있다면****
request.user:  admin
request.auth: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI0NTMwNzA3LCJqdGkiOiI5OTc3OWI3ZmE5MWE0NTkwYTliMjcxMGMxNzljM2QyYiIsInVzZXJfaWQiOjEsImlzX3N0YWZmIjp0cnVlLCJpc19zdXBlcnVzZXIiOnRydWV9.Gz7nuCjaQzV-F3Clmrf_eS43CVe0dB7ObUtCas655R4

request.data

request.data는 parsing된 request의 body의 content부분을 반환해준다. 

보시다시피 file부분(위의 예에서는 'images')과 non-file(위의 예에서는 'title')을 포함합니다.

 

request.FILES

이미지 파일 같은 요청 값들을 반환해준다. 

해당 데이터 이용은 다음 아래의 링크를 눌러서 확인해보자.

https://vixxcode.tistory.com/83

 

DRF IMAGE 복수 처리

1단계(설치) pip instll Pillow django djangorestframework 2단계(설치) django-admin startproject backend . django-admin startapp blog 3단계(settings.py) INSTALLED_APPS = [ ... 'django.contrib.sites',..

vixxcode.tistory.com

 

request.method

요청된 메소드가 어떤 메소드인지 반환해준다. (대문자로 표시된 문자열로 반환해준다.)

 

 

request.content_type

해당 request의 body가 어떤 타입인지 반환해준다. 위의 경우에는 'images'가 포함되서 multipart/form-data로 반환되었다.

 

request.user

위의 예에서는 JWT를 사용하여 회원 인증을 하기 때문에 request.user는 해당 JWT의 username부분을 가져온다.

 

request.auth

위의 예에서는 JWT를 사용했기 때문에 JWT의 값을 가져온다.

 

참고: https://www.django-rest-framework.org/api-guide/requests/

 

Requests - Django REST framework

 

www.django-rest-framework.org

 

반응형

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

2. Django - response에 대하여  (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
글 보관함