22.12.01 14:35 작성
·
265
1
DetailVIew 및 ListView 에서
as_view() 할때
model, template_name_field, template_name 등등 상속으로 받은 클래스 변수를 초기화 해줍니다.
여기서 질문은
제가 클래스를 만들어 위 내용에 동일한 클래스 변수 생성하여 다중 상속하고 classmethod를 선언하여 메소드에 상속 된 변수를 선언할려고 하는데
코어에 as_view() 처럼 무엇이 상속되었는지 표시가 나오지 않습니다.
해당 내용에 대한 해결 방법에 대해 질문드립니다.
아래 내용은 스크린샷 입니다.
코어에서 as_view()
제가 만든 함수
답변 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