Django알아보기
spring
만 써봤던 내가 Django
를 빠르게 학습하려면 spring
에 있었던 것들을 Django
에서 제공하는 기능들에 매핑시켜서 학습하는 것이 가장 쉽고 빠르게 학습할 수 있는 방법이라고 생각이든다.
MVC 와 MTV
Spring
에서는 MVC
패턴을 사용한다. Model-View-Controller
패턴이다. Django
에서는 MTV
패턴으로 Model-View-Template
으로 스프링에서 컨트롤의 역할을 하는 것이 템플릿이다.
Model
은 데이터를 저장, View
는 데이터를 유저에게 보여주고, Control
, Template
은 사용자의 입력과 이벤트에 반응하여 Model
과 View
를 업데이트한다.
Django의 flow
출처: https://pythonhosted.org/MyTARDIS/_images/DjangoArchitecture-JeffCroft.png
출처: https://marici.io/wp-content/uploads/2020/08/Django-Architecture.jpg
출처: https://res.cloudinary.com/hdedbapl6/image/upload/v1/media/images/django_flow_sauufz.width-800_sprjhb
event 발생 -> URL Dispatcher (url 분석)-> 적합한 View 선택 -> 사용자 요청에 따른 DB요청 ( Model )-> 데이터 전송 (Database) -> model -> view -> template
이런 순서로 진행된다.
Django는 Spring JPA
에서 제공하는 ORM
이 models.py
의 MODEL Manager가 데이터를 가져와서 매핑해준다.
Project와 App
장고의 프로젝트는 하나의 웹 사이트라고 생각하면 된다. 즉, 장고 프로젝트를 생성하면 하나의 웹 사이트를 생성하는 것이다. 프로젝트 안에는 여러 개의 앱이 존재하는데, 이 앱들이 모여 웹사이트를 구성한다.
여기서의 앱은 관리자 앱, 인증 앱 등 같이 장고가 제공하는 기본 앱과 개발자가 직접 만든 앱을 말한다. 일반적으로 알고 있는 앱의 단위보단 프로젝트를 구성하는 작은 단위의 기능이다.
#프로젝트 생성
$ django-admin startproject {프로젝트 이름}
#app 생성
$ ./manage.py startapp {app 이름}
setting.py
프로젝트 환경 설정 파일이다.
- DEBUG : 디버그 모드 설정 (개발때 True로 설정해서 사용)
- INSTALLED_APPS : pop로 설치한 앱 또는 본인이 만든 app을 추가
- 서드파티 앱들을 사용할 수 있다.
- MIDDLEWARE_CLASSES: request, response 사이 주요 기능 레이어
- TEMLPLATES: django template관련 설정, 실제 뷰(html, 변수) 등
- DATABASES: 데이터베이스 엔진 연결 설정
- STATIC_URL: 정적 파일의 url
manage.py
프로젝트 관리 명령어 모음
주요 명령어
- startapp : 앱 생성
- runserver : 서버 실행 ( default port: lacalhost 8080)
- createsuperuser : 관리자 생성
- makemigreations app : app의 모델 변경 사항 체크
- migrate: 변경 사항을 DB에 반영
- shell : 쉘을 통해 데이터를 확인
- collectstatic : static 파일을 한 곳에 모음