반응형
이 글은 본인이 공부를 목적으로 공식문서를 읽으며 정리/번역한 글로서 오역이 있을 수 있을 수 있습니다. 또한 본인이 이미 알고 있거나 불필요하다 느끼는 내용들은 누락될 수 있습니다.
Class-based view는 view를 함수가 아닌 파이썬 객체로 구현할 수 있는 하나의 방법이다. Class-based view는 function-based view를 대체하지는 않지만 그와 비교하여 차이점과 장점이 있다.
- HTTP method(GET, POST, etc)에 따른 코드를 conditional branching(IF)를 하지않고 별도의 메소드로 분리 할 수 있다.
- 객체 지향 테크닉들이 사용될 수 있다.
Using class-based views
from django.http import HttpResponse
def my_view(request):
if request.method == 'GET':
# <view logic>
return HttpResponse('result')
가 아래로 대체될 수 있다.
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
# <view logic>
return HttpResponse('result')
장고의 URL resolver는 request와 인자들을 클래스가 아닌 호출가능한 함수에 보내기 때문에 class-based view는 as_view()라는 클래스 메소드를 사용하여 request를 받는다. 이 함수는 클래스 인스턴스를 생성하고 setup()을 호출하여 attribute들을 initialize하고 dispatch()를 호출한다. dispatch()는 request를 확인하여 GET,POST 등 해당하는 메소드에 전달하여 준다.
반응형
'백엔드' 카테고리의 다른 글
Apache vs NginX vs Tomcat (0) | 2020.03.30 |
---|---|
Docker와 Nginx 포트 포워딩 (0) | 2020.03.20 |
[Web Server 이해하기] Apache vs Nginx (0) | 2020.03.18 |
[Web Server 이해하기] CGI / WAS / WSGI (0) | 2020.03.18 |
[Web Server 이해하기] Gunicorn과 Nginx 역할분배 (0) | 2020.03.18 |