[django] request / json.loads /

BackEnd_Ash.log·2020년 4월 17일
5

2020.09.24

2020.11.26 request.file 업데이트

데이터를 받아오고 주는 형식에는 여러 방법이 있다.
제가 알고있는 것과 사용해 본것을 다음에도 볼 것을 생각하여
메모를 해볼까 합니다.

request

request.GET.get()

  • request.GET.get() 은 GET 요청이 접근할 수 있는 키와 밸류값을 이용한다.

  •     token = request.headers.get('Authorization', None)

json.loads(request.body)

방금 위처럼 사용하게 되면 headers 에서 get 을 방겠다는 말인데
그 get 받는것이 딕셔너리로 되어있고 key 가 Authorization 인것을 받겠다는 얘기입니다.

  •     address_data = json.loads(request.body)

json.loads 는 말그대로 짐을 싣겠다는건데 그게 json 으로 실어서 보내겠다는 의미가 된다
파라미터에는 무엇을 실어서 보내겠냐는 얘기이고 request.body 에 있는것을 json 에 실어서 보내게 된다 .

  •     data   = json.loads(request.body)
      review = data.get('review', None)

만약에 json.loads(request.body) 를 받아서

data 변수에 담고나서 ,
data.get('review' , None) 으로 해서 review 라는 키 를 들고와서 review 변수에 담으면 됩니다.

request.file

1. request.FILES.get

data = request.FILES.get('file',None)
print(data.name)

2. 삼항 연산자

filepath = request.FILES['filepath'] if 'filepath' in request.FILES else False

3. try except

from django.utils.datastructures import MultiValueDictKeyError

try:
    filepath = request.FILES['filepath']
except MultiValueDictKeyError:
    filepath = False

하지만 3번은 추천하는 방법은 아닙니다.

정리

  • header 로 받는다 ?
    request.headers.get 으로 받아야 한다.

  • body 로 받는다 ?

request.GET.get 으로 받아야한다 .
만약에 json.body 에 담아서 받고싶다면 ?

test = json.loads(request.body)
result_test = test.get('data' , None)

이렇게 받으면 됩니다.

Jquery

만약에 Jquery 로 데이터를 보내게 될때 ,

data = json.loads(request.body)

로 해서 데이터가 안받아지는경우가 있다.

이럴때

data = request.body

로만해서 받아야 한다.

profile
꾸준함이란 ... ?

0개의 댓글