MVC(장고는 MTV)

Model - 안전하게 데이터를 저장

View - 데이터를 적절하게 유저하게 보여줌

Control, Template(Django) - 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트

 

옛날에는 하나의 파일 안에 모델과 데이터베이스, 디자인들이 다 합쳐져 있었음 -> 여러명이 작업할 때 불편 -> 아 프로젝트 관리가 안 되니, MVC처럼 코드를 분리하면서 해보자 해서 아래와 같은 로직이 만들어짐.

 

Django 개념

Django의 flow

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파일을 한 곳에 모음

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기