이 글은 해당 영상을 보면서 정리한 글입니다.
웹 프레임워크 Django(python) 개념 정리 강의
MVC 이전에는 다양한 코드가 한 곳에 들어가 있어서 하나를 잘못 건드리면 시스템 전체가 문제가 됐었다.
Model
View
Control
로 분류함Model : 안전하게 데이터를 저장
View : 데이터를 적절하게 유저에게 보여줌
Control (Template(Django)) : 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트
참조 사이트
Essence of MVC
왼쪽, 오른쪽 그림 모두 설명하는건 똑같지만 오른쪽 그림이 좀 더 자세하게 그려져있을뿐이다.
유저들이 사용하는 웹 브라우저에서 어떤 이벤트(url 클릭, 데이터 입력 등)가 발생한다. 장고 서버로 들어와서 우선 Url Dispatcher
이 유저들이 요청한 url
을 분석하게된다. 그러면 분석한 url
에 맞는 view
로 보내주게 된다. view
는 유저의 요청을 받아서 데이터베이스의 어디에 접근해서 어떤 데이터를 가공할지 알려준다. model
에서는 데이터베이스와 연결해서 데이터를 갖고오게된다. 데이터베이스
에서 model
로 데이터를 보내주고, model
은 view
에 실질적인 데이터를 보내주고, view
는 유저에게 보여줄 데이터를 template
에게 보내준다. 그리고 template
가 js나 html과 같은 다양한 형태의 UI형태로 만들어서 웹브라우저로 넘겨준다.
웹프로젝트를 생성하면 다양한 파일들이 생성되는데 녹색
으로 표시된 것들이 실질적으로 우리가 다루게될 파일들이다.
하나의 프로젝트가 하나의 웹 사이트라고 생각하면 된다. 이 프로젝트 안에는 다양한 기능들이 있는데, 이것들을 App으로 관리하게 된다.
project 생성
django-admin startproject 프로젝트명
python manage.py startapp 앱이름
DEBUG
: 디버그 모드 설정. 프로그래밍을 할 때 에러같은걸 보고싶다면 True
로 두면 변수들의 상태를 볼 수 있다. 단, 배포할 때는 False
로 해놔야 사용자에게 디버그 정보를 노출시키지 않는다.INSTALLED_APPS
: pip로 설치한 앱 또는 본인이 만든 app을 추가MIDDELWARE_CLASSES
: 다양한 request와 response 사이에서 인증 혹은 보안과 관련된 내용들을 다룬다.TEMPLATES
: html파일과 다양한 변수들을 view에서 컨트롤해서 다루게되는데, templates 파일과 관련된 변수들을 조정하는 컨테스트와 template를 검색하기 위한 기능들, 폴더 위치들을 다루는 설정 부분DATABASES
: 데이터베이스 엔진의 연결 설정. 주소나 계정을 설정STATIC_URL
: html 문서와 관련된 다양한 정적파일들 css, javascript, image 등의 파일들이 있는데, 이 파일들과 관련된 url 및 디렉토리를 다루는 설정 부분python manage.py runserver 0.0.0.0:8080
#runserver 뒤에 아무것도 안주면 기본적으로 8000포트로 열리지만,
#외부에서 접근할 수 없다. 그래서 외부에서 접근하게 하려면 따로 인자를 선언해줘야한다.