Request 관련 메소드 비교

Request 관련 메소드 비교

request.get과 request.GET.get

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

  • request.get은 Python의 문법
  • request.GET은 Djang의 문법이라는 이미지

request.get

  • request라는 이름의 객체에 대해 get 메소드를 실행하는 것
  • 이때의 request 객체는 사전형의 데이터
    • get 메소드를 사용할 수 있는 것은 사전형 객체 뿐
request = {'cat':10, 'dog':17} 
request.get('cat') 

>>>10
  • Django에 Function Based View를 정의할 때의 인수로써 설정하는 'request'는 사전형 데이터가 아님
def test(request): 
    print(request.get('')) 
    return HttpResponse('') 

# AttributeError: 'WSGIRequest' object has no attribute 'get'

request.GET

  • request.GET은 Django에서 사용 가능
  • requestHTTP 리퀘스트가 보내졌을 때에 Django가 만든 객체
    • request.GET을 실행하는 것으로 request의 정보를 사전형의 데이터로 얻을 수 있게 됨
    • request.GET하는 것으로 get메소드를 사용하여 데이터를 취득하는 것이 가능
# http://localhost:8000/test/?a=100

def test(request): 
    print(request.GET['a']) 
    return HttpResponse('')

>>> 100
# request.GET형의 사전형이 아닌 파라미터를 참고한 경우

def test(request): 
    print(request.GET['somekey']) 
    return HttpResponse('') 
 
# django.utils.datastructures.MultiValueDictKeyError: 'somekey'
  • Django에는 request의 내용을 얻어낼 때는 request.GET.get을 사용하는 것이 일반적
  • get 메소드는 대상이 되는 데이터가 없는 경우에 None이 리턴되기 때문
def test(request): 
    print(request.GET.get('somekey')) 
    return HttpResponse('') 

>>> None

마무리

  1. request.get()은 Python 메소드이며 대상은 사전형 데이터
  2. Django의 request는 사전형이 아님
  3. request를 사전형으로 바꿀 수 있는 것이 request.GET
  4. 에러가 발생하지 않기 때문에 request.GET.get을 사용하는 것이 일반적

좋은 웹페이지 즐겨찾기