티스토리 뷰
Django 구조 이해하기
Software Design Pattern이 필요한 이유
위 그림은 부산의 대표적인 대교들이다.
왼쪽 상단부터 시계방향으로 대동화명대교, 부산항대교, 거가대교, 광안대교다.
사진을 보면 알 수 있듯이 사실상 다 똑같이 생겼다.
건축가들은 여러 번 대교를 만들면서 자주 사용되는 구조를 발견하고, 이를 일반화하여 하나의 공법을 만들었다.
이후 대교를 지을 때마다 공법을 사용한다.
소프트웨어에서도 이런 점이 있다.
다양한 응용 소프트웨어를 개발할 때 공통적인 설계문제가 존재하며, 이에 따른 해결책 또한 공통점이 있다.
이 유사점을 패턴이라고 한다.
소프트웨어 디자인 패턴은 자주 사용되는 소프트웨어의 구조를 마치 건축 공법처럼 일반적으로 구조화한 것이다.
소프트웨어 디자인 패턴 중 하나인 클라이언트-서버 구조를 사용한 예를 살펴보자.
Before) 서비스를 요청하는 쪽과 해당 요청을 처리하는 쪽을 따로 개발해서, 둘 사이에 데이터를 주고 받는 방식을 정의한 다음, 다수의 요청을 처리하는 구조를 만들어보자.
After) 클라이언트-서버 구조로 구현하자
소프트웨어 디자인 패턴은 이처럼 커뮤니케이션을 간소화한다.
MVC 소프트웨어 디자인 패턴
MVC는 데이터 및 논리 제어를 구현하기 위해 사용되는 소프트웨어 디자인 패턴이다.
하나의 큰 프로그램을 Model - View - Controller의 세 역할로 구분한 개발 방법론이다.
Model : 데이터 관련 로직 관리
View : 레이아웃과 화면 처리
Controller : model과 view사이를 연결하는 로직
"관심사를 분리한다"는 개념으로, 각 부분을 독립적으로 개발할 수 있다.
따라서
- 개발의 효율성 및 유지보수가 쉬워진다 : 하나를 수정하고 싶을 때 전체를 건들이지 않아도 된다.
- 업무가 분리되어 여러명이 함께 개발하기 편하다.
장고의 디자인 패턴 : MTV 패턴
장고의 디자인 패턴은 MVC 패턴을 기반으로 만들어졌다.
MVC | MTV |
Model | Model |
View | Template |
Controller | View |
1. Model
- 데이터 관련 로직 관리
- 데이터 구조를 정의하고 데이터베이스 기록을 관리한다.
- MVC에서 Model의 역할
2. Template
- HTML
- 레이아웃과 화면을 처리
- MVC에서 View의 역할
3. View
- 모델 & 템플릿 사이의 로직을 처리하여 응답 반환
- 동작 예시
- model에 접근하여 데이터를 가져오고
- 해당 데이터를 template으로 보내 화면을 구성하고
- 구성된 화면을 응답으로 만들어 클라이언트에게 반환
- MVC에서 Controller의 역할
'프로젝트 > Django 키우기' 카테고리의 다른 글
[Web/Django] 4. 메인 페이지 생성하기 (0) | 2023.04.13 |
---|---|
[Web/Django] 3. base 템플릿, urls 세팅하기 (0) | 2023.04.13 |
[Web/Django] 2. 장고 프로젝트/애플리케이션 생성 (0) | 2023.04.13 |
[Web/Django] 1. 장고 프로젝트 환경 설정하기 (0) | 2023.04.13 |
[Web/Django] 파이썬 웹 프레임워크 장고 (0) | 2023.03.14 |
- Total
- Today
- Yesterday
- 하둡
- 정규표현식
- 프로그래머스
- docker
- ubuntu
- SQL
- re라이브러리
- sql 데이터타입 변경
- 빅데이터
- Linux
- stream=true
- 백트래킹
- SSAFY
- 오블완
- 파이썬
- MySQL
- 우분투
- 백준
- json필드
- mysql binary
- hdfs
- 리눅스
- 바이너리 조건
- 스택
- 싸피
- 백준 3020
- 완전탐색
- sql대소문자
- 티스토리챌린지
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |