티스토리 뷰
HttpRequest
• 클라이언트부터의 모든 요청 내용을 담고 있으며, 매 요청 시마다 뷰 함 수의 첫번째 인자로 전달
(중요) 모든 뷰함수는 첫번째 인자로 request를 받는다 FBV, CBV=self.reqyest
HttpRequest objects 에서 폼 처리 관련 속성들
- request.method : 요청의 종류, 무조건 "GET" 또는 "POST" (참고) 무조건 대문자!!
- request.GET : GET인자, QueryDict 타입 (GET요청/POST요청 시)
- request.POST : POST인자, QueryDict 타입 (POST요청 시)
- request.FILES : POST업로드 파일 인자, MultiValueDict 타입
MultiValueDict <- Dict 상속
http://localhost:8888/say_hello/?name=Tom&name=JJini&name=photo 웹에서는 네임중복이 됨으로 장고에서 지원해야한다.
동일 key의 다수 value를 지원하는 사전
URL의 Query String은 같은 Key로서 다수 Value지정을 지원
- name=Tom&name=Steve&name=Tomi
QueryDict <- MultiValueDict을 상속
수정 불가능한 (Immutable) MultiValueDict
MultiValueDict(dict)
# 동일 key의 다수 value를 지원하는 사전
from django.utils.datastructures import MultiValueDict d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']}) d['name'] 출력 >'Simon' d.getlist('name') 출력 >['Adrian', 'Simon'] d.getlist('doesnotexist') 출력 > [] d['name'] = 'changed' d 출력 > <MultiValueDict: {'name': ['changed'], 'position': ['Developer']}> |
QueryDict(MultiValueDict)
# 수정 불가능한 (Immutable) MultiValueDict
# 아래 코드는 Django Shell을 통해서 실행이 가능
from django.http import QueryDict qd = QueryDict('name=Adrian&name=Simon&position=Developer', encoding='utf8') qd['name'] 출력 > 'Simon' qd.getlist('name') 출력 > ['Adrian', 'Simon'] qd['name'] = 'changed' # 수정 불가능 출력 > AttributeError: This QueryDict instance is immutable |
HttpResponse
response # HttpResponse 인스턴스인데, render를 통해서, 좀더 쉽게 템플릿을 통한 렌더링
뷰 함수의 리턴값으로서 HttpResponse의 인스턴스를 기대
- Feat. Middleware
여러 Helper 함수를 통해 손쉽게 HttpResponse 인스턴스 생성
(django.shortcuts.render, django.shortcuts.redirect,django.http.JsonResponse 등)
"""본 내용은 AskDjango VOD, "장고 차근차근 시작하기" 강의내용을 참고하여 작성했습니다.(https://nomade.kr/)"""
'Python > * Django' 카테고리의 다른 글
19. ModelForm (0) | 2017.12.20 |
---|---|
18. Form (0) | 2017.12.19 |
16. CSRF(Cross-Site Request Forgery) (0) | 2017.12.15 |
15. HTML Form (0) | 2017.12.15 |
14. Django 템플릿 엔진 - 템플릿 필터 (0) | 2017.12.15 |