HttpRequest와 HttpResponse // django form(2)

2022. 4. 17. 05:15
  • 인프런 이진석 강사님의 장고 강의를 참고

1. HttpRequest 

HttpRequest 객체

  • 현재 요청에 대해, 클라이언트로부터의 모든 요청 내용을 담고 있음. 즉 요청 메세지 전체를 parsing해서 가지고 있다고 보면 됨
  • FBV와 CBV둘 모두 당연히 접근가능하며, 접근 방식은 다르다
    • FBV : 매 요청 시마다 뷰 함수의 첫번째 인자 request로 전달됨
    • CBV : 매 요청 시마다 self.request를 통해 접근
  • Form 처리 관련 속성들 .
    • request.method : 요청의 종류에 대한 정보. "GET","POST","PUT" 등으로 모두 대문자형태임
    • request.GET : GET 인자 목록 (QueryDict타입) .
    • request.POST : POST 인자 목록 (QueryDict타입) .
    • request.FILES : POST 인자 중에서 파일 목록 (MultiValueDict 타입)

 

MultiValueDict

  • multivaluedict에 대한 설명이지만, querydict와 거의 동일하다고 보면 됨.(즉 request.GET이나 request.POST도 아래에 설명된 속성을 그대로 가진다고 보면 됨)
  • dict를 상속받은 클래스
    • 그러나 키중복이 허용됨
    • 반대로 mutable한 dict와 다르게 immutable임
  • http 요청에서는 하나의 key에 대해 여러 값을 전달받는 경우가 있음. 이러한 경우에 대응하기 위해 키중복을 허용
    • ex)Tom,Steve의 물품을 모두 가져오라는 querysting : ..objects/?name=Tom&name=Steve
    • 동일한 이름으로 올려지는 사진 100장을 받을 수 있음

 

2. HttpResponse

  • view함수에서의 반환값은 무조건 httpresponse(혹은 Jsonresponse)여야 함
  • 왜냐하면 view의 응답을 middleware에서 감싸서 서버측에 전달하게 되는데, 이때 middleware가 httpresponse객체를 기대하기 때문. 즉 HttpResponse가 아니면 에러가 난다.

 

BELATED ARTICLES

more