TIL no.15 - Django - 웹 프레임워크 Django 입문

codeamor·2020년 7월 9일
0

Django

목록 보기
1/1

✔️ 목 차

  • MVC, MFV
  • Django 개념
  • Project와 App
  • settings.py
  • manage.py


✔️ MVC & MTV

  • Model
    : 안전하게 데이터를 저장한다.

  • View
    : 데이터를 적절하게 유저에게 보여준다.

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

MVC 로직 이전에는 모든 로직이 한 곳에 다 뭉쳐 있었다.
다수의 사람이 작업을 할 시에 문제가 생기게 된다.

큰 프로젝트 일 수록 이런 식으로 분할해서 작업하는 것이 좋다.

✔ Django 개념

Django가 동작하는 전체적인 시스템

  1. 사용자의 행동이 Django 서버로 들어온다.

  2. URL Dispatcher 에서 유저가 요청한 URL을 분석한다.

  3. 분석한 URL에 적합한 View로 보내주게 된다.

  4. View는 사용자의 요청을 받아서 데이터베이스의 어디에 접근해서 어떤 데이터를 가공해야 할지 알려주면 Model에서 실제적인 데이터베이스와 커넥션을 하고 데이터를 가져오게 된다.

  5. Database에서 Model로 데이터를 다시 보내준다.

  6. Model 에서 View로 실제적인 데이터를 보내준다.

  7. View가 실제적으로 사용자에게 보여 줄 데이터를 Template에게 보내준다.

  8. Template 가 HTML, JavaScript 등과 같은 유저 인터페이스를 만들어서 웹 브라우저로 넘겨주게 된다.

사실, 데이터베이스로부터 데이터를 가져와서 데이터를 클래스에 넣고 클래스 변수를 조작하게 되는데, 이 과정이 상당히 복잡하다.
php, asp, jsp 프로그래밍에서 sql 문을 다루는 게 쉽지가 않았다.
Django 는 이러한 sql query 를 작성할 필요가 없고 내장된 manager 가 알아서 다 처리해준다.

  1. View 에서 어떠한 형태이든지 데이터를 가공을 하게 됐다면,
    이제 사용자에게 보여주기 위한 작업을 해야한다.

  2. Template를 만들어서 웹 서버로 전송해야 한다.

  • Template는 HTML파일인데 그 안에 로직을 삽입할 수 있다.
    • Control과 관련된 로직들인데, View에서 받은 데이터를 어떻게 하면 HTML파일에 잘 보여줄 수 있을지 Script 파일들이 담겨지게 된다.
    • FORM(forms.py)을 이용해 모델과 Template 에 있는 사용자들이 쓰는 UI가 쉽게 관리가 될 수 있다. Django에선 편리하게 FORM이 구성이 된다.
  1. View에서 데이터를 보내준 것을 Template가 사용자 UI에 적절하게 구성을 해주고,
    구성된 정보가 Web server로 가게 된다.

  2. Web server는 그 정보를 사용자에게 보내 준다.


✔ Project와 App

프로젝트 생성

$ django-admin startproject turorial


app 생성

$ ./manage.py startapp community

  • 프로젝트 내부에 다수의 app 생성

  • 앱은 다른 앱에 사용될 여지가 있으므로 따로 분리가 되어 있다.

  • community 라는 이름으로 app을 생성하고 안에 다수의 파일들이 생성됨.

    • admin.py는 관리자 권한을 가지는 사용자가 볼 수 있는 페이지를 다룸
    • models.py는 데이터베이스와 관련된 역할을 수행.
    • views.py 데이터베이스로부터 가져온 데이터를 가공.
    • migrations 폴더는 데이터베이스와 관련됨.

✔ settings.py

: 프로젝트 환경 설정 파일

  • DEBUG
    : 디버그 모드 설정

  • 개발 중이는 TRUE, 배포 시에는 FALSE

  • INSTALLED_APPS
    : pip로 설치한 앱 또는 본인이 만든 app을 추가

  • MIDDLEWARE_CLASSES
    : request와 response 사이의 주요 기능 레이어

  • TEMPLATES
    : django template 관련 설정, 실제 뷰(html, 변수)

  • DATABASES
    : 데이터베이스 엔진의 연결 설정

  • STATIC_URL
    : 정적 파일의 URL(css, javascript, image, etc.)

✔ manage.py

  • 프로젝트 관리 명령어 모음
  • 주요 명령어
    • startapp - 앱 생성
    • runserver - 서버 실행
    • createsuperuser - 관리자 생성
    • makermigrations app - app의 모델 변경 사항 체크
    • migrate - 변경 사항을 DB에 반영
    • shell - 쉘을 통해 데이터를 확인
    • collectstatic - static 파일을 한 곳에 모음
  • ex) 외부에서 8080포트로 접속되는 서버
    ./manage.py runserver 0.0.0.0:8080

0개의 댓글