인프런 커뮤니티 질문&답변

김태우님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

django 코드를 보려고 하는데 질문드립니다.

작성

·

289

·

수정됨

0

저는 클래스의 self가 클래스의 인스턴스를 만들었을때 그 인스턴스 자신을 self라고 하는것으로 알고있었습니다. 그런데 장고코드에는 클래스기반뷰에서 클래스의 인스턴스를 만들지 않음에(예를들어 a=RedirectVIew()어쩌구 하는게 아니라 a=RedirectView.as_view()를 통해서 함수를 넘기잖아요)도 불구하고 self가 다양하게 들어가는데 이건 어떤 의미인가요?^^;;

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

아래에서 .as_view 함수의 구현을 찾아보실 수 있는데요https://github.com/django/django/blob/4.1.5/django/views/generic/base.py#L80

  1. .as_view() 함수는 클래스메서드로서 호출 시에, 새로운 view 함수를 생성하고,

  2. 이를 반환해주는 역할을 합니다. 즉, as_view() 함수는 뷰 함수를 생성해줍니다.

  3. 웹 요청이 들어오면, 생성된 view 함수가 호출이 되면서 요청을 처리합니다. 매 요청 처리시마다 해당 클래스의 인스턴스가 생성이 되면서 요청을 처리하게 됩니다.

    1. 즉, 우리가 인스턴스 생성에 관여하지 않습니다.

image

살펴보시고, 또 질문 남겨주세요.

화이팅입니다. :-)