본문 바로가기
IT관련/Python

python의 django를 이용해서 웹을 만들어보자 - 6편 공통으로 쓰는부분(core)를 다뤄보자!

728x90

5편 https://heokknkn.tistory.com/9

 

자 ! 먼저 공통으로 쓰는 부분을 모아보겠습니다 ! 

예를 들어서 어떤 사람이 글을 썼는데 그 글에 대한 정보를 저장 할 때 !!! 생성시간 이라던가 이 글을 수정 했을 때의 시간이라던가 등등등 공통으로 쓰는 부분이 있겠죠?? 이것으로 모아봅시다 ! 이것이 Core !! 

 

 

Core ! 공통으로 ~ 만들어보자 ~
django-admin startapp core

먼저 위에처럼 core 앱을 하나 만들어주세요 ! 

당연히 장고에게 알려주세요 ! 

그러고 나서 core에 models를 봐볼까요?? 

여기서 자신이 정말 공통으로 쓰여질 항목을 써줍니다 ! 

일단 아래를 한번 봐주세요 !!! 저는 생성시간과 업데이트 시간을 써줬습니다 ! 

여기서 가장 중요한건 마지막입니다 ! 

 

Meta ! 이 부분이 뭐냐면 

장고에서 마이그레이션을 할 때 abstract를 True로 하면 이 모델에 대해서는 테이블을 생성하지 않습니다 !!! 

실제로 무슨 말이야? 라고 할 수 있는데요 !! 

이렇게 공통으로 쓰는것을 그냥 선언만하고 마이그레이션을 하면 core라는 테이블이 생성 될 수도 있습니다 ! 

 

하지만 저희는 core에 안에 있는것을 추상화 해서 다른곳에서 상속받아서 사용하려고 하는거지 굳이 core에 테이블이 필요하지 않습니다 ! 

그럼 한번 봐볼까요?? 

먼저 meta부분을 주석처리해봣습니다 !! 

그리고 나서 마이그레이트 !!!  그럼 성공했습니다 ! 

또한 위에처럼 core의 테이블이 생성됩니다 ! 이건 저희가 원하는 테이블이 아닙니다 ! 

자 그러면 삭제해줍시다 ! 

테이블 삭제는 조금 귀찮지만 !!! 쉽습니다 !!! 정말입니다 ! 

위에서 migrations안에 있는 __init__.py를 빼고 다 지워주세요 !! 

그리고 아래와 같이 해주세요 ! 

 

py manage.py dbshell 실행 후
drop table '지우고싶은 테이블 명' 
저는 참고로 drop table core_AbstractTimeStampedModel
exit 를 실행해서 db로부터 나옵시다

자 ! 그러면 다시 깨끗한 상태가 됩니다 ! 

그럼 이번엔 meta의 abstract를 True로 하고 마이그레이트를 실행해볼까요? 

마이그레이트 하고 밑에서 테이블을 확인해주면

core에 관한 테이블은 생성되지 않았습니다 !!! 

즉 core라는 앱은 가상의 상태로 ! 상속을 받아서 사용이 가능 한 상태임을 알 수 있습니다 !! 

 

하지만?? 이것을 한번 해봐야 진짜로 알겠죠??? 

그럼 한번 사용해봅시다 !!! 

저는 communities라는 앱을 만들어서 진행해보겠습니다 ! 

communities의 models

저기서 core를 import 해서 class에서 상속을 받습니다 !!! 

자 이렇게 하고 마이그레이트를 해봅시다 !!! 

성공 !! 

짠 ! 저렇게 성공했습니다 ! 

 

이렇게 core 앱을 이용하는 방법을 알아봤습니다 ! 

공통으로 모으는 것은 core뿐만 아니라 자신만의 앱을 정해서 만들면 무궁무진하게 사용할것같으니 !! 

이 방법은 많이쓰니까 숙지해두면 좋을거같습니다 !! 

아 ! 전 개인적으로 상속받은값이 맨 마지막 컬럼으로 갈 줄 알았는데 ㅜㅜ 

이 방법은 저도 조금 더 찾아보고 알아내면 수정하겠습니다 ! 

 

728x90