Django알아보기

spring만 써봤던 내가 Django를 빠르게 학습하려면 spring에 있었던 것들을 Django에서 제공하는 기능들에 매핑시켜서 학습하는 것이 가장 쉽고 빠르게 학습할 수 있는 방법이라고 생각이든다.

MVC 와 MTV

Spring에서는 MVC패턴을 사용한다. Model-View-Controller 패턴이다. Django에서는 MTV패턴으로 Model-View-Template으로 스프링에서 컨트롤의 역할을 하는 것이 템플릿이다. Model은 데이터를 저장, View는 데이터를 유저에게 보여주고, Control, Template은 사용자의 입력과 이벤트에 반응하여 ModelView를 업데이트한다.

Django의 flow

Djago Functional Architecture

출처: https://pythonhosted.org/MyTARDIS/_images/DjangoArchitecture-JeffCroft.png

Django Architecture

출처: https://marici.io/wp-content/uploads/2020/08/Django-Architecture.jpg

Django Architecture

출처: 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

Django는 Spring JPA에서 제공하는 ORMmodels.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 파일을 한 곳에 모음

results matching ""

    No results matching ""