Django란?
: 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)
- 검증된 Python 언어 기반의 Web Framework
- Spotify, Instagram 등의 기업들이 사용 중
Framework
: 프로그래밍에서 특정운영체제를 위한 응용프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임
- 웹 프로그램을 만들기 위한 "스타터 키트" 같은 개념
- 코드를 다시 작성하지 않아도 같이 사용할 수 있도록 도움
- 이미 잘 만들어진 프레임워크에서 가져올 수 있기 때문에 시간이 절약됨
Framework Architecture
: 사용자 인터페이스로부터 프로그램 로직을 분리하여 애플리케이션의 시각적 요소나 이면에서 실행되는 부분을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음
- 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나
- MVC(Model, View, Controller) 혹은 MTV(Model, Template, View) Pattern
MTV Pattern
웹 프로그래밍 영역을 3가지 개념으로 나누어 개발하는 방식 (Django에서 사용)
Model - DB 정의
: 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리(추가, 수정, 삭제)
- 사용자들이 작성한 데이터를 저장, 보관하다 요청시 꺼내주는 곳
- Django는 ORM 기법을 사용해 앱에서 사용할 DB를 class로 매핑
- ORM: 객체와 관계형 DB를 연결해주는 역할
- 모델 클래스 === 테이블
- 모델 클래스의 속성 === 테이블의 컬럼
Template - 화면 UI 정의
: 파일의 구조나 레이아웃을 정의
- 실제 내용을 보여주는 데 사용(presentation)
View - 로직 정의
: HTTP 요청을 수신하고 HTTP 응답을 반환
- Model을 통해 요청을 충족시키는데 필요한 데이터에 접근
- template에게 응답의 서식 설정을 맡김
→ Model과 Template를 연결하는 역할

출처: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Introduction#what_does_django_code_look_like
장고 개발 흐름 정리하기

1. 브라우저에서 로컬 서버로 http://localhost:8000/pybo 페이지를 요청
2. urls.py에서 /pybo URL 매핑을 확인하여 views.py 파일의 index 함수 호출
3. 호출한 결과를 브라우저에 반영
출처: https://wikidocs.net/70649
Do Not Reinvent The Wheel!