함수기반 뷰

2023. 3. 7. 16:35개발/토막난 상식

반응형

https://wikidocs.net/9623

 

02) 클래스형 뷰 (CBV)

[TOC] # 클래스형 뷰 (CBV, Class-Based View) 클래스형 뷰는 상속과 믹스인 기능을 이용하여 코드 재사용하고 뷰를 체계적으로 구성할 수 있다. ## CB…

wikidocs.net

뷰(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