함수기반 뷰
2023. 3. 7. 16:35ㆍ개발/토막난 상식
반응형
뷰(View)
기본적인 장고 뷰의 로직은 1개의 HTTP 요청에 대해 1개의 뷰가 호출되는 것입니다. 구체적으로 말하면 urls.py/urlpatterns 리스트에 매핑된 호출 가능한 객체를 가리키는데, 웹 클라이언트로부터의 HTTP 요청을 처리합니다. 뷰에는 크게 2가지 형태가 있으며, 1) 함수 기반 뷰(Function Based View, FBV), 2) 클래스 기반 뷰(Class Based View, CBV)입니다.
FBV는 호출 가능한 객체 그 자체이며 장고 뷰의 기본입니다. CBV는 클래스.as_view() 를 통해 호출 가능한 객체를 생성하거나 리턴합니다.
첫 번째 인자: HttpRequest 객체
- 현재 요청에 대한 모든 내역을 담고 있음
두 번째 인자: 현재 요청의 URL로부터 Capture된 문자열들
- url/re_path를 통한 처리에선 모든 인자가 string 타입으로 전달
- path를 통한 처리에선 매핑된 Converter의 to_python에 맞게 변환된 값이 인자로 전달
View 호출에 대한 리턴값
1. HttpResponse 객체를 리턴해야 한다.
- 장고 Middleware에선 뷰에서 HttpResponse 객체를 리턴하기를 기대합니다. 다른 타입을 리턴하면 Middleware에서 처리하는 데 오류가 발생합니다.
(뷰를 미들웨어가 감싸고 있다고 생각하면 됩니다.)
- django.shortcuts.render 함수는 템플릿 응답을 위한 shortcut 함수입니다.
2. 파일과 같은 객체 혹은 str/bytes 타입의 응답을 지원
- str 문자열을 직접 utf8로 인코딩할 필요가 없습니다(장고 디폴트 설정에서 utf8로 인코딩)
- response=HttpResponse()
3. 파일과 같은 객체
response.write(str 또는 bytes 객체)
반응형
'개발 > 토막난 상식' 카테고리의 다른 글
vsc Import not be resolved from source (0) | 2023.03.08 |
---|---|
Python - 장식자(decorator) (0) | 2023.03.08 |
쿠키 세션 (0) | 2023.03.07 |
협업_마이그레이션 (0) | 2023.03.07 |
blank (0) | 2023.03.07 |