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가 아니면 에러가 난다.
'django > basic' 카테고리의 다른 글
CSRF 공격&CSRF Token // django form(4) (0) | 2022.04.17 |
---|---|
ModelForm // django Form(3) (0) | 2022.04.17 |
HTML Form과 Django Form // django form(1) (0) | 2022.04.17 |
django view(8) : 뷰 장식자(decorator) (0) | 2022.04.16 |
django view(7) : GenericDateViews (0) | 2022.04.16 |