02.-2 장고 탐구

조재훈·2022년 7월 15일
0

Clone_Airbnb

목록 보기
4/31
post-thumbnail

1. migrate

생성되어있는 db.sqlite3 파일을 삭제해보자.

이 상태에서 다시 서버를 실행시키면 이전에 봤던 에러가 뜬다.

관리자 페이지에 접속해보면 아래와 같이 뜬다.

"no such table: django_session"

장소에서 데이터베이스 테이블을 검색하지만 존재하지 않는다.
즉 장고와 데이터베이스가 지금 서로 연동이 되어있지 않다는 뜻이다.
db.sqlite3 파일이 생성되었지만 빈 깡통이다.

즉, migrate를 해줌으로써 장고의 정보를 서버와 연동시킬 수 있게 되는 것이다. 데이터를 어떠한 유형과 형태로 저장할 것인지에 대한 정보가 연동된다. 즉, 데이터 구조나 형태가 변경될 때 마다 migrate가 필요하다.

2. 데이터 구조 변경시

데이터 구조가 변경되면 아래와 같은 두 명령어를 실행하여 적용한다.

python manage.py makemigrations
python manage.py migrate

아래와 같이 makemigrations을 실행하면 장고는 데이터 구조가 변경된게 있는지 들여다본다.

python manage.py makemigrations

당장은 딱히 바뀐게 없어서 저렇게 뜬다.

그리고 migrate를 사용해서 데이터베이스를 업데이트한다. 이러한 방식으로 SQL을 배우지 않고서도 DB를 동기화하여 다룰 수 있게 된다.

다시 migrate를 해준다.

pythn manage.py migrate

db.sqlite3 파일에 이상한 내용들이 마구마구 저장되는걸 볼 수 있다.

3. 장고 project 구조

장고의 project는 여러개의 application으로 구성되어있다. application은 일종의 폴더이며, function들의 집합이다.

그러면 function은 어떻게 나눌 것인가?
에어비앤비를 들어가보자.

숙소를 클릭해보면 아래와 같이 뜬다.

예를 들어 Room을 보자.

  • 생성
  • 수정
  • 삭제
  • room 보여주기
  • 모든 room 보여주기

어? 후기가 있네?

  • 후기 생성
  • 후기 삭제
  • 후기 수정
  • ...

예약도 있구만?

  • 예약 생성
  • 예약 삭제
  • 예약 수정
    ....

이것들을 전부 한 기능으로 통합하는 것은 옳지 않다.
가장 중요한 것은

Divide and Conquer

적정한 규모의 기능들 단위로 나누는 것이 핵심.

어떻게 나누는 것이 적정한지는 아직 감이 안잡히는데.... 강의듣다보면 어차피 나오겠지만 조금 더 고민해봐야겠다.

application들을 생성하고나면 이것들을 config에 통합하여 장고 웹사이트를 구성할 수 있다.

profile
맨땅에 헤딩. 인생은 실전.

0개의 댓글