Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

p.146 Post 모델 만들기

3 years, 3 months ago

jae_seok jae_seok

안녕하세요! 작가님의 책을 통해서 공부하던 도중 잘 이해가 가지 않는 부분이 몇 가지 생겨 질문을 드립니다.


1. Post 모델은 models 모듈의 Model 클래스를 확장해서 만든 파이썬 클래스라고 설명을 해주셨는데, 확장을 했다는 것을 상속이라고 받아들였습니다.(제대로 이해한 것이 맞을까요?) 보통 상속이라고 하면 다른 클래스의 기능을 물려받을 수 있는 것인데 그렇다면 Post 모델은 어떤 기능을 Model 클래스로부터 상속을 받는 것인가요?


2. models를 모듈이라고 표현을 하셨는데 구글링 하던 도중 django github repository 를 발견했습니다. 여기서 전체 소스코드를 확인할 수 있었는데요, 만약 models가 모듈이라면 models.py로 끝이 나야 하는데, models라는 directory로 되어 있습니다. 그렇다면 모듈이 아니라 패키지로 보는 것이 맞지 않을까요?


jae_seok
jae_seok   3 years, 2 months ago

답변 달아주셔서 감사합니다. 위에 질문드린 부분이 이해가 가지 않아 이곳저곳 돌아다니면서 많은 정보를 보다 보니 오히려 정리가 잘 안되었는데, 작가님께서 주신 답변으로 정리가 잘 되었습니다. 감사합니다^^

Updated: Aug. 2, 2021, 4:17 p.m.

taegon
taegon   3 years, 3 months ago

안녕하세요.

저희 책을 선택해주셔서 감사하며, 저희와 함께 웹서비스를 완성할 수 있기를 응원합니다.

좋은 질문이네요. 먼저 첫번째 질문은 이해하신 바가 맞습니다. 모듈의 db 패키지에 들어있는 걸으로 유추하실 수 있겠지만, 객체로 선언한 변수명을 데이터베이스 필드와 매칭하여 사용자가 입력한 자료를 데이터베이스에 기록한다던지, 데이터베이스에 기록된 정보를 다시 파이썬 객체로 불러오는 등의 기능을 위하여 Model 클래스를 상속하는 것입니다.

첫번째 의문을 해결하기 위해서 여러모로 찾아보신 것 같습니다. 찾아보신 것처럼 소스코드를 찾아서 직접 읽어보실 수 있습니다. models는 패키지라고 이해하시면 되는데, 코드를 잘 읽어보시면, 우리가 상속하는 것은 models가 아니라, models.Model 입니다. 즉 Model 클래스인 것이지요. 독자님께서 이해하신 것처럼 보통은 클래스명은 파일명과 동일하게 작명하는 것이 일반적입니다. 하지만 여기에서는 models를 import 하였습니다. 이 경우에는 해당 폴더의 __init__.py 파일을 읽게 됩니다. 그리고, 해당 파일에 보면, __all__ 변수에서 Model를 지정하여 자동으로 import 되도록 하고 있습니다. 그러면 Model 클래스는 어디에 있느냐, base.py 파일을 열어보시면, Model 클래스를 확인하실 수 있을 겁니다.

질문에 답이 되셨길 바라며, 처음에는 이런 긴 코드가 읽기 힘들겠지만, 전부 이해가 되지 않더라도, 한번 읽어보시면 궁금증을 해결하는 데 도움이 될 것이라고 믿습니다.

좋은 질문 감사드리며, 책을 읽다가 의문이 생기거나, 문제가 있으시면 질문 남겨주세요.

고맙습니다.

Updated: Aug. 2, 2021, 12:39 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A