MVC(장고는 MTV)
Model - 안전하게 데이터를 저장
View - 데이터를 적절하게 유저하게 보여줌
Control, Template(Django) - 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트
옛날에는 하나의 파일 안에 모델과 데이터베이스, 디자인들이 다 합쳐져 있었음 -> 여러명이 작업할 때 불편 -> 아 프로젝트 관리가 안 되니, MVC처럼 코드를 분리하면서 해보자 해서 아래와 같은 로직이 만들어짐.
Django 개념
url dispatcher : 요청한 url을 분석해서 적합한 view를 보여줌
view : 어떤 데이터를 가공할지 model과 커넥션, model->view(데이터 전송)
template : view에서 받은 데이터를 js와 같은 인터페이스를 통해 Web browser로 전송
녹색이 실질적으로 다루는 파일들
browser에서 webserver로 요청(신호가 들어옴) -> wsgi는 웹서버와 장고를 적절하게 결합(건들일 없음) -> urls.py이 정규표현식으로 되어 있는데, wsgi로부터 받아 view로 전송 -> views.py가 실질적으로 많이 작성하는 곳(데이터베이스를 가져오고 model에 신호를 보내는 등 여러 처리) + model.py에서 변수만 지정하면 따로 sql 쿼리 작성할 필요없이 managers가 다 알아서 해줌. -> view에서 가공한 데이터를 template(html파일에서 로직을 삽입)을 만들어서 다시 웹서버로 전송
form에서 사용자의 ui를 관리
project와 App
프로젝트 = 웹사이트 (django-admin startproject 이름명) manage.py라는 실행파일 생성 + tutorial이라는 폴더 생성 + 다양한 py 생성
app = 프로젝트의 의미있는 기능(블로그, 쇼핑몰, 전자상거래 등)
./manage.py startapp community (프로젝트 내부의 다수 app 생성)
setting.py
프로젝트 환경 설정 파일
debug - 디버그 모드 설정(다양한 변수들의 상태 확인, 배포할때는 false로 해야 노출x)
installed_apps - pip로 설치한 앱 또는 본인이 만든 app 추가
middleware_classes : request<->respone(신경 안 써도 됨)
templates : 실제 뷰(html, 변수)
databes : 데이터베이스 설정
static_url : 정적 url(css, javascript, image, etc)
manage.py
프로젝트 관리 명령어 모음
startapp - 앱 생성
runserver - 서버 실행 (ex - ./manage.py runserver 0.0.0.0:8080)
createsuperuser - 관리자 생성
makemigrations app - app의 모델 변경 사항 체크
migrate - 변경 사항을 db에 반영
shell - 쉘을 통해 데이터 확인
collectstatic - static파일을 한 곳에 모음
최근댓글