Django 기본 개념 정리 - 시작은 어디서?_(5)

EBAB!·2023년 7월 7일
0

Django 시작하기

목록 보기
10/10
post-thumbnail

(글만 많아서 재미없음 주의..ㅠ)

어떤 곳은 models.py 작성으로 시작하고, 어떤 곳은 views.py 작성으로 시작합니다. 저라면 models.py로 시작하겠지만 연습은 views.py가 좋다고 생각합니다.

이전 설명에서처럼 models.py는 db와 관련되어 있고 views.py는 요청과 응답에 대한 로직을 구현합니다. 사실 어떤 프로젝트를 개발하기 시작한다면 처음에 개발환경 구축보다 먼저 해야할 것들이 꽤 많습니다.

models.py로 시작하는 이유

흔히 말하는 소프트웨어 개발단계를 간단히 보면,

  1. 요구사항 분석: 해결할 문제를 분석, 기능, 제약 조건, 목표 정의 등등
  2. 시스템 명세 : 시스템이 무엇을 수행하는지 정의
  3. 설계: 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정, 시스템 구조 설계 등
  4. 프로그래밍 : 설계를 직접적으로 구현하기 위해 언어 선택, 프로그래밍 기법, 스타일, 순서 등을 고려.
  5. 테스트
  6. 유지보수

라고 있습니다. 물론 이런 단계에서도 갈래가 여러 가지가 있지만, 아예 다른 방법론이 아닌 순서나 관점에 의한 중요도 차이가 달라지는 정도입니다.

어쨌든 중요한 것은 프로그래밍 이전에 많은 것을 정해두고 프로그래밍으로 돌입하게 됩니다. 예를 들어, ERD(Entity Relationship Diagram) 정도는 작성되어 있는 것이죠.

  • ERD 예시(ERD를 보며 DB를 작성 가능)

사각형 하나가 django에서 모델클래스가 될 예정입니다. 이런 이유로 앞선 단계에서 ERD가 작성된 상태라면 models.py를 좀 더 빠르게 정의할 수 있게 됩니다.

model이 정의가 된 상태라면 views.py에서 이 모델들을 가지고 좀 더 다양한 로직을 할 수 있게 될꺼고요!

views.py로 시작하는 이유

사실 django가 초심자 웹 개발자에게 좋지 못하다는 이유를 듣는 것 중 하나가 저 models.py입니다. 웹에 대한 이해를 하기 전에 데이터베이스와 너무 밀접하다는 이유입니다.

로직은 둘째치고 우선 내가 보낸 요청과 그에 대한 응답이 잘 오가는지(통신이 잘 되는지), 그런데 통신은 어떻게 이뤄지는지 등 제가 앞서 설명했던 2-2 게시글을 보면 웹 통신만 해도 잘 알아야 할 것들이 많습니다.

그런 이유에서인지 대부분 django 개발글에서 models.py나 db부분은 큰 비중을 두지 않는 것을 봐왔던 것 같습니다.

어쨌든 중요한 것은 처음엔 views.py에서 요청과 응답에 대한 개념, 구현을 해보는 것이 좋다고 생각합니다.

사실 의미 없을지도..

개발하다보면 어쨌든 왔다갔다 합니다. models.py를 일정부분 구현해두고 views.py에서 확인하고 그런 식이죠.
그래서 사실 이런 시작점에 대해 말하는 것이 의미없을 수도 있습니다..

하지만 다른 분들의 게시글마다 왜 models.py, views.py로 시작하는지 이유가 없고 제가 처음에는 이런 부분에서 문제가 되지 않을까 고민했던 경험이 있어 이유와 제 생각을 적어보았습니다.

migration 조심!

앞으로 개발하다보면 migration 관련 에러가 꽤 자주 날텐데 이 주제와 연결됩니다.

우리는 초심자라서 db에 대해 잘 모르고 대부분 글들은 이 부분에 집중해서 개발하지 않습니다.(우리의 흥미를 죽이지 않기 위해..!)

그렇기 때문에 models.py 프로그래밍울 따라하는것 외에 하기 힘들고 쉽게 수정해버립니다. 그러면서 내가 정의한 models.py와 db에서 정의된 형태가 달라지게 되는거죠

그 사이에 많은 일이 일어납니다.
단순히 migrate을 안해주는 상황도 있고,
migrate을 해줬지만 내가 나중에 필드를 뺀다던가,
그게 migration 문서로 남아서 인식이 안된다던가 등등..

db에 대해 잘 모르는 상태로 시작하셨다면 어떤 게시글이든 models.py를 잘 따라 작성하시고 makemigration 자주 해주세요. 세이브 포인트입니다ㅋㅋ

profile
공부!

0개의 댓글