[TIL]request.get 그리고 request.GET.get

여주링·2020년 12월 30일
0

TIL

목록 보기
2/13
post-thumbnail

request.get,request.GET.get 처음 본 나는 그 차이점을 단 1도 알지 못했다.
아직도 많이 어려운 부분이라 한번 간단히 정리해 보려고한다!

여기서 알아둘점
request가 django에서의 request(사전형)인지 잘 구분!

1. request.get()

request라는 객체에 get매소드를 실행하는 것이다. 이때의 request의 객체는 사전형이다(은~근 헷갈림), 이말은 다르게 말하면 get()사전형 객체에만 사용 할 수 있음을 의미한다.

그런데! 보통 django에서 인수로써 설정하는 request는 사전형 데이터가 아님!

2. request.GET

request.GET

request.GET은 Django에서 사용할 수 있다. 1번에서 언급했지만, 보통의 경우 Django에서의 request는 사전형 데이터가 아니다. 이 때,request.GET을 사용하는걸로 http request의 정보를 사전형의 데이터로 얻을 수 있다. 즉, request.GET결과의 사전형에 get메소드를 사용하여 데이터를 취득하는 것이다

Django에서는 http request의 내용을 얻을 때 request.GET을 사용하는게 일반적이다. (이렇게 해야 에러가 발생하지 않는다)

request.GET.get()

get()을 붙일까? 만일 사전형이 아닌 값을 참조한 경우, 에러가 발생한다. 왜냐, 사전형이 아니니까!

def fbv(request):
	print(request.GET['somekey']) 
    
    return HttpResponse('') 

# django.utils.datastructures.MultiValueDictKeyError: 'somekey'

이때 get()을 사용해주면 대상이 없는 경우 에러가 아닌 None을 만들어준다

def fbv(request):
	print(request.GET.get('somekey')) 
    return HttpResponse('') 
    
# 결과값 None
profile
🌱Backend Developer👩‍💻

0개의 댓글