request.get
,request.GET.get
처음 본 나는 그 차이점을 단 1도 알지 못했다.
아직도 많이 어려운 부분이라 한번 간단히 정리해 보려고한다!
여기서 알아둘점
request가 django에서의 request(사전형)인지 잘 구분!
request
라는 객체에 get매소드
를 실행하는 것이다. 이때의 request의 객체는 사전형이다(은~근 헷갈림), 이말은 다르게 말하면 get() 은 사전형 객체에만 사용 할 수 있음을 의미한다.
그런데! 보통 django에서 인수로써 설정하는
request
는 사전형 데이터가 아님!
request.GET
은 Django에서 사용할 수 있다. 1번에서 언급했지만, 보통의 경우 Django에서의 request는 사전형 데이터가 아니다. 이 때,request.GET
을 사용하는걸로 http request의 정보를 사전형의 데이터로 얻을 수 있다. 즉, request.GET결과의 사전형에 get메소드를 사용하여 데이터를 취득하는 것이다
Django에서는 http request
의 내용을 얻을 때 request.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