Django | 장고 개념 & flow

Sua·2021년 1월 19일
2

Django

목록 보기
1/23
post-thumbnail
post-custom-banner

본 포스팅은 웹 프레임워크 Django(python) 개념 정리 영상을 참고하여 작성되었습니다.

MVC & MTV

MVC이 많이 알려져 있고 장고에서는 MTV를 사용한다. 두 개념은 동일하다.

  • Model : 안전하게 데이터를 저장
  • View : 데이터를 적절하게 유저에게 보여줌(유저가 원하는 형태로 만들어서)
  • Control, Template(Django) : 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트

참고사이트

Django 개념

<왼쪽 구조도 설명>

  1. Web Browser에서 이벤트 발생
  2. URL Dispatcher에서 요청한 URL을 분석, 분석한 URL에 적합한 View로 보내줌
  3. View는 사용자에 요청을 받아 Database 어디에 접근해서 어떤 데이터를 가공해야할 지 알려줌
  4. Model에서 실제적으로 Database와 연결하고 데이터를 가져옴
  5. Database -> Model -> View -> Template으로 데이터 전송, Template가 HTML, JS 등의 유저 인터페이스를 만들어서 Web Browser로 넘겨 줌

이렇게 복잡한 과정을 거치는 이유는 특정 영역을 분리하는 게 효율적이기 때문이다.


<오른쪽 구조도 설명>

장고 웹 프로젝트를 생성하면 다양한 파일들이 생성된다. 녹색 파일이 실질적으로 다룰게 될 파일

  1. 브라우저에서 요청을 보내면 WSGI(Web Server Gateway Interface)로 신호가 들어온다. (이 파일은 건드릴 필요가 없다.) 웹서버와 장고를 적절하게 결합시키는 역할을 한다.
  2. 신호가 들어오면, urls.py 파이썬 코드에서 받게 된다. 정규표현식으로 구성되어있는데, 정규표현식에 맞게 특정한 view로 보내지게 된다.
  3. view에서 판단 - 사용자의 요청에서 의해 데이터 베이스에 입력할 건지, 데이터 베이스로부터 데이터를 가져올 건지 등을 결정을 하게 됨
  4. model에서 신호를 보내서 데이터베이스에서 데이터를 가져와 클래스(변수)에 넣음
    (장고에서는 model 변수만 지정해주면 데이터베이스와 연결하는 것은 managers가 알아서 처리한다. 즉, 따로 sql문을 작성할 필요가 없다.)
  5. template에서 사용자에게 보여주기 위한 UI 작업을 한다. HTML 형태로 다양한 로직을 삽입한다.
  6. Form을 사용하면 model과 template에 있는 사용자들이 쓰는 UI가 쉽게 관리된다.
  7. 구성된 정보는 웹서버로 간다. 웹서버는 그 정보를 사용자에게 전달한다.

프로젝트 생성

django-admin startproject tutorial

manage.py 실행파일과 프로젝트 명으로 폴더 생성됨

  • settings.py : 전체 프로젝트를 관리하는 설정이 담겨 있음

app 생성

./manage.py startapp community

  • admin.py : 관리자 권한을 가지는 사용자가 볼 수 있는 페이지를 다루는 파일
  • models.py : 데이터 베이스 관련 역할
  • views.py : 데이터를 적절하게 가공

settings.py

프로젝트 환경 설정 파일

  • DEBUG : 디버그 모드 설정, True - 개발 단계, 다양한 변수들의 상태 확인 가능 / False - 배포 시
  • INSTALLED_APPS : pip로 설치한 앱 또는 본인이 만든 앱 추가
  • MIDDLEWARE_CLASSES : request와 response 사이의 주요 기능 레이어
  • TEMPLATES : template 파일과 관련된 변수들을 조정하는 context, template를 검색하기 위한 기능, 폴더 위치 등을 다루는 설정파일(html, 변수)
  • DATABASES : 데이터베이스 엔진의 연결 설정
  • STATIC_URL : 정적 파일의 URL(css, javascript, image, etc.)

manage.py

프로젝트 관리 명령어 모음

  • startapp : 앱 생성
  • runserver : 서버 실행
  • createsuperuser : 관리자 생성
  • makemigrations app : app의 모델 변경 사항 체크(변경 사항을 서버와 동기화할 수 있는 쿼리를 생성)
  • migrate : 변경 사항을 DB에 반영
  • shell : 쉘을 통해 데이터를 확인
  • collectstatic : static 파일을 한 곳에 모음

ex) ./manage.py runserver 0.0.0.0:8080

profile
Leave your comfort zone
post-custom-banner

0개의 댓글