[Django] request.GET.get()

김가람휘·2022년 3월 6일
0

Django

목록 보기
11/13

1. request.get()

  • request라는 이름의 객체에 대해 get메소드를 실행하는 것이다.
    -> 이때의 request객체는 사전형의 데이터이다.
request = {'key':10, 'animal':'cat'}
request.get('key')
# 10
  • get메소드를 사용할 수 있는 것은 사전형 객체뿐이므로 django에 function based view를 정의할 때의 인수로써 설정하는 request는 사전형 데이터가 아닌 것을 주의하자.
def fbv(request):
	print(request.get(''))
    return HttpResponse('')
# AttributeError: 'WSGIRequest' object has no attribute 'get'
  • WSGI(Web Server Gateway Interface)
    -> 웹 서버 소프트웨어와 파이썬으로 작성된 웹 응용 프로그램 간의 표준 인터페이스

2. request.GET

  • request.GET은 django에서 사용할 수 있다.
  • request는 Http request가 보내졌을 때에 django가 만든 객체이다.
  • request.GET을 실행하는 것으로, request의 정보를 사전형의 데이터로 얻을 수 있게 된다.
    -> request.GET하는 것으로 get()을 사용하여 데이터를 얻을 수 있다.
# http://localhost:8000/fbv/?q=100
def fbv(request):
	print(request.GET['q'])
    return HttpResponse('')
# 100
  • request.GET형의 사전형이 아닌 파라미터를 참고한 경우에 어떻게 될까?
def fbv(request):
	print(request.GET['somekey'])
    return HttpResponse('')
# django.utils.datastructures.MultiValueDictKeyError:'somekey'
  • django에서 request의 내용을 얻어낼 때는 request.GET.get()을 사용하는 것이 일반적이다.
    -> get()은 대상이 되는 데이터가 없는 경우에 None이 리턴되기 때문이다.
def fbv(request):
	print(request.GET.get('somekey'))
    return HttpResponse('')
# None

3. request.get과 request.GET.get의 차이점

  • request.get() -> python의 문법, 대상은 사전형데이터로 key가 딕셔너리 안에 있으면 value를 리턴해준다, 키값이 존재하지 않으면 디폴트값 None을 리턴한다.
  • request.GET -> django의 문법, 전달받은 것들을 모두 사전형 형태로 가져오는 것
  • request.GET.get() -> django의 문법, key를 입력하면 value를 가져와준다, 키값이 존재하지 않으면 디폴트값 None을 리턴한다.
    -> 에러가 발생하지 않아 일반적으로 request.GET.get()을 사용한다.

0개의 댓글