Model
: 안전하게 데이터를 저장한다.
View
: 데이터를 적절하게 유저에게 보여준다.
Control, Template(Django)
: 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트한다.
MVC 로직 이전에는 모든 로직이 한 곳에 다 뭉쳐 있었다.
다수의 사람이 작업을 할 시에 문제가 생기게 된다.
큰 프로젝트 일 수록 이런 식으로 분할해서 작업하는 것이 좋다.
Django가 동작하는 전체적인 시스템
사용자의 행동이 Django 서버로 들어온다.
URL Dispatcher 에서 유저가 요청한 URL을 분석한다.
분석한 URL에 적합한 View로 보내주게 된다.
View는 사용자의 요청을 받아서 데이터베이스의 어디에 접근해서 어떤 데이터를 가공해야 할지 알려주면 Model에서 실제적인 데이터베이스와 커넥션을 하고 데이터를 가져오게 된다.
Database에서 Model로 데이터를 다시 보내준다.
Model 에서 View로 실제적인 데이터를 보내준다.
View가 실제적으로 사용자에게 보여 줄 데이터를 Template에게 보내준다.
Template 가 HTML, JavaScript 등과 같은 유저 인터페이스를 만들어서 웹 브라우저로 넘겨주게 된다.
사실, 데이터베이스로부터 데이터를 가져와서 데이터를 클래스에 넣고 클래스 변수를 조작하게 되는데, 이 과정이 상당히 복잡하다.
php, asp, jsp 프로그래밍에서 sql 문을 다루는 게 쉽지가 않았다.
Django 는 이러한 sql query 를 작성할 필요가 없고 내장된 manager 가 알아서 다 처리해준다.
View 에서 어떠한 형태이든지 데이터를 가공을 하게 됐다면,
이제 사용자에게 보여주기 위한 작업을 해야한다.
Template를 만들어서 웹 서버로 전송해야 한다.
View에서 데이터를 보내준 것을 Template가 사용자 UI에 적절하게 구성을 해주고,
구성된 정보가 Web server로 가게 된다.
Web server는 그 정보를 사용자에게 보내 준다.
프로젝트 생성
$ django-admin startproject turorial
app 생성
$ ./manage.py startapp community
프로젝트 내부에 다수의 app 생성
앱은 다른 앱에 사용될 여지가 있으므로 따로 분리가 되어 있다.
community 라는 이름으로 app을 생성하고 안에 다수의 파일들이 생성됨.
: 프로젝트 환경 설정 파일
DEBUG
: 디버그 모드 설정
개발 중이는 TRUE, 배포 시에는 FALSE
INSTALLED_APPS
: pip로 설치한 앱 또는 본인이 만든 app을 추가
MIDDLEWARE_CLASSES
: request와 response 사이의 주요 기능 레이어
TEMPLATES
: django template 관련 설정, 실제 뷰(html, 변수)
DATABASES
: 데이터베이스 엔진의 연결 설정
STATIC_URL
: 정적 파일의 URL(css, javascript, image, etc.)