본문 바로가기

웹개발

장고와 MVT(23.04.25)

장고의 캐치프레이즈

마감을 맞추고 싶은 완벽주의자를 위하여

장고는 2005년 부터 시작된 파이썬 오픈소스 웹 프레임워크/풀 스택 프레임 워크로, 처음에는 뉴스 피드를 관리하기 위한 컨텐츠 관리 시스템으로부터 발전하였다.

장고의 장점

  • fully loaded. 웹개발에 필요한 다양한 도구들을 대부분 내장하고 있다. - 인증, 컨텐츠 관리, 사이트 맵, RSS 피드, 메일 보내기, form 등등
  • Admin(backoffice) - 재고변경, 계정복구/탈퇴, 통계 등을 위한 관리자 사이트가 이미 만들어져 있고 관련 API도 만들기 좋다.
  • 많은 기능을 보유한 풀스택 프레임워크
  • 강력한 ORM, 많은 사용자/커뮤니티
  • 빠른 개발과 손쉬운 보안

MVT 패턴

JS의 MVC패턴과 유사하지만 이름이 다르다.

  • Models: 데이터 정의 (재료)
  • Views: 요청 처리 (주방)
  • Templates: 사용자에게 보여짐. 템플릿엔진을 통해 파이썬 문법 사용가능 (dish)
    스프링/MVC에서의 View는 화면(MVT의 template)를 이야기하고, Controller는 MVT의 view를 이야기 하는 것이라고 생각하면 이해하기 좋다.

MVT의 동작 흐름

  1. 사용자(브라우저)가 url로 요청을 보낸다.
  2. url.py는 경로를 확인해 적절한 view를 결정해 요청을 전달한ㄷ.
  3. view에서 요청을 처리하는 로직들이 동작한다.
    1. DB 처리 필요할 시: model을 통해 처리
    2. HTML(template)렌더링이 필요할 시: 응답에 쓸 HTML 파일 생성.
  4. 사용자(브라우저)에게 response를 보낸다.

* ORM?

객체(Object)와 관계(Relation)를 연결(Mapping)하는 개념으로 일일히 쿼리문을 작성하지 않아도 데이터베이스를 조작할 수 있게해준다.

Django 개발의 순서

1. App 생성

python3 manage.py startapp <app명>

App이란

기능/웹 앱등 개발간 필요범위로 나누어 관리하기 위한 것. App을 나누는 기준은 명확하지는 않지만 ERD 등에서 분리되어 나타나거나 분리되는 것이 좋은 기능들.

App을 잘 나누면 확장성을 확보하는데 용이하다.

예를들어 자동차 판매사이트라면 계정,차량종류 및 정보, 쇼핑으로 크게 나눌 수 있을 것이다.

2. 모델 만들고 makemigration, migrate

  • makemigrations <앱이름> : migration파일 생성(sql로 만들 수 있게 사전 번역)
  • sqlmigrate <앱이름> <마이그레이션버전> : sql 쿼리문 보여줌
  • check : 유효한지 검사
  • migrate : 실제 DB에 반영(쿼리문으로 번역)

3. views 작성

클래스와 함수를 이용헤 데이터/템플릿을 응답으로 보내기 위한 로직을 구현한다.

4. urls.py 작성

urlpatterns를 작성해 어떤 url이 어떤 view를 실행시킬지 결정한다.

* urls.py를 왜 app마다 새로만들어줘야할까?

  • url 제어 방법에는 매우 다양한 방법이 있으므로 url제어를 할 수 있도록 선택지를 넓히기 위해서
  • 타 프로젝트에서도 활용될수 있게 독립적으로 app을 쓰게하는 철학
  • 수동으로 생성해서 종속시켜버리는건 편의성을 위해 철학을 약간 거스르는 관행이다. 

5. runserver <port>로 검증한다.

 

 

배운점

  1. 장고의 지향점, 장점에 대해 상기하였다. 개발자는 자신이 사용하는 도구의 장점과 사용해야하는 이유에 대해 알고 사용해야한다. 코더는 도구를 쓸줄 알고, 개발자는 왜 쓰는지 안다.
  2. check, sqlmigrate 에 대해 알게되었다.

 

 

'웹개발' 카테고리의 다른 글

DRF + ML 1일차  (0) 2023.05.31
ERD 강의 정리(04.27)  (0) 2023.04.27
세션인증과 토큰인증  (0) 2023.04.24
DRF 1강 - HTTP와 웹 동작 방식  (0) 2023.04.18
ERD 설계 특강 내용  (0) 2023.04.05