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

cls님의 프로필 이미지

작성한 질문수

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

장고 기본 CBV API (Generic display views) (2)

DetailVeiw 및 ListView.as_view() 파라미터 설정에 대한 질문

22.12.01 14:35 작성

·

265

1

DetailVIew 및 ListView 에서

as_view() 할때

model, template_name_field, template_name 등등 상속으로 받은 클래스 변수를 초기화 해줍니다.

여기서 질문은

제가 클래스를 만들어 위 내용에 동일한 클래스 변수 생성하여 다중 상속하고 classmethod를 선언하여 메소드에 상속 된 변수를 선언할려고 하는데

코어에 as_view() 처럼 무엇이 상속되었는지 표시가 나오지 않습니다.
해당 내용에 대한 해결 방법에 대해 질문드립니다.

아래 내용은 스크린샷 입니다.

코어에서 as_view()

스크린샷 2022-12-01 오후 2.34.21.png

제가 만든 함수

스크린샷 2022-12-01 오후 2.35.05.png

 

 

답변 2

1

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

2022. 12. 01. 15:44

안녕하세요.

"클래스 기반 뷰"의 as_view는 단순히 클래스 함수입니다.

클래스에 클래스 변수로서 정의된 model, template_name 이 있다고 한다면,

as_view는 키워드 인자로 받은 값들을

위 클래스 변수와 같은 이름의 인스턴스 변수를 선언할 수 있도록 도와주는 역할입니다.

as_view 구현을 보시면

@classonlymethod
def as_view(cls, **initkwargs):
...

as_view 함수만 본다면 unpack 방법으로 키워드 인자를 다수 받을 뿐, model, template_name 과 연결되는 포인트가 없습니다.

DetailView에서 as_view에 대한 키워드 추천은 파이참 내부에서 DetailView에 대한 처리를 직접 해주지 않았을까하는 추측을 하고 있습니다.

그러니, 직접 정의한 클래스에 대해서는 그런 자동완성 부분이 안 되는 듯 싶습니다. 파이썬도 type hinting이 좀 더 자리잡으면, 이런 부분에 대한 자동완성 기능도 보다 견고해지지 않을까 싶습니다.

클래스의 상속관계는 해당 클래스명에 마우스 커서를 두시고 우클릭하시면, Diagrams 메뉴가 있습니다. 그 아래에 Show Diagram -> Python Class Diagram 메뉴를 선택하시면, 상속관계를 보여줍니다.

그리고, 파이참 좌측에 Structure 창을 여시면, 선언하신 클래스의 상속내역을 포함한 각종 클래스/인스턴스 메서드와 클래스 변수 목록을 확인하실 수 있습니다.

화이팅입니다. :-)

0

cls님의 프로필 이미지
cls
질문자

2022. 12. 01. 18:37

확인감사합니다!

cls님의 프로필 이미지

작성한 질문수

질문하기