디자인 패턴(Design Pattern)
설계 문제에 대한 해답을 문서화하기 위해 고안된 형식방법(Gamma et al., 1994, Design Patterns (the "Gang of Four" book))
대표적인 디자인 패턴, MVc
- model(모델) - view(뷰) - controller(컨트롤러)
- 사용자 인터페이스와 로직 분리로 서로 독립적인 애플리케이션을 만들 수 있음
- 유지보수, 확장성 등에 용이
- Model : 애플리케이션의 정보(데이터)
- View : 사용자가 보는 레이아웃, 화면 (인터페이스)
- Controller : 모델에 명령을 보냄으로써 모델의 상태 변경, 컨트롤러가 뷰에 명령을 보냄. (데이터와 로직 사이의 상호작용)
(RegisFrey - The model, view, and controller (MVC) pattern relative to the user.)
Django의 디자인 패턴, MVT!
- Model : 데이터베이스의 데이터, 표시하고자 하는 데이터
- Template (= MVc의 view) : 사용자의 요청에 의해 처리되어 나타난 화면, 데이터 표시하는 형식, 웹 페이지 레이아웃 HTML 파일
- View (= MVc의 controller) : 사용자의 요청을 처리하는 역할
(출처 : https://velog.io/@inyong_pang/Django-MVTModel-View-Template-%ED%8C%A8%ED%84%B4 )
- 다른 프레임워크에서는 MVC 디자인 패턴을 사용한다.
- M (model) : 장고에서 model에 해당하는 영역
- V (view) : 사용자가 보는 화면. 장고에서 Templates에 해당하는 영역.
- C(controller) : 장고에서 view에 해당하는 영역
1. Model
DB와 연곃된 python class
- 데이터베이스에서 데이터를 제공
- ORM(Odject Relational Mapping, 객체- 관계 매핑) 으로 데이터가 전달됨.
💡 ORM(Odject Relational Mapping)
: 객체- 관계형 데이터베이스(RDMS)를 연결해주는 것. 모델 클래스와 DB에 생성된 테이블을 자동으로 연결해 주는 기술로, DB를 직접 조작하지 않아도 모델 클래스의 Python 문법을 통해 DB를 조작할 수 있는 기술.
객체 지향 프로그래밍이 사용하는 클래스, 관계형 데이터베이스에서 사용하는 테이블 모델간의 불일치를 자동으로 SQL을 이용하여 해결
(https://gmlwjd9405.github.io/2019/02/01/orm.html)
models.py
파일
- 머신러닝 모델이 아닌, 데이터 모델 할 때 그 모델
2. View
Django에서 처리된 데이터를 templates에 전달
- http 요청을 받아 관련 모델을 불러오고, template에 보낼 데이터를 찾아 결과를 반환하는 함수 또는 메소드
veiws.py
파일
3. template
사용자에게 보여줄(response) client view
- 사용자 요청을 처리한 결과를 표현하는 방법 (어떻게 사용자에게 처리된 결과를 보여줄 것인가)
- 프론트엔드의 영역 같은 곳(html, css, js, react)
- HTML + Django 태그를 사용
templates.py
파일
4. URLs
- Django는 웹사이트의 여러 페이지를 탐색할 수 있게 함
- 사용자 URL 요청을 하면 Django에서 보낼 URL view를 결정하여 반환
urls.py
파일
Django 웹 어플리케이션 실행 절차
- URL을 사용자로 부터 받으면
urls.py
에서 파일을 확인하여, URL과 일치하는 view를 호출
- views.py에서 관련 models을 확인
- models.py에서 models가 import 됨
- templates.py에서 데이터를 해당 template에 보냄
- template는 HTML, Django tags, 데이터로 구성된 콘텐츠를 browser에 반환하여 서비스 제공
(https://www.inflearn.com/course/lecture?courseSlug=web_fullstack&unitId=74170)
## Django 웹 어플리케이션 구축절차
1. url.py : url 상세명서
2. views.py : 함수명세, 클래스 명세
3. midels.py: 데이터베이스 명세
4. templates.py
참고