하루에는

[Django]MTV 패턴 본문

Python, Django

[Django]MTV 패턴

에는 2019. 10. 1. 14:56

Overview

  • MTV 패턴

MTV 패턴

  • T(Templates)는 유저가 보는 화면에 해당
  • V(View)는 기능을 구현하는 부분
  • M(Model) 테이블을 정의하는 부분. 장고는 ORM을 제공한다.
    • ORM이란: Object-Relational Mapping, SQL 대신 데이터베이스를 쉽게 연결해주는 것

Django

  • python 기반 웹 어플리케이션 프레임워크
  • MTV 패턴
  • admin 기능 제공
  • 쉬운 URL 파싱 제공

프로젝트 생성

가상환경

  • pip 패키지들을 독립적으로 설치
  • 파이썬으로 작성된 패키지 소프웨어를 설치, 관리하는 패키지 관리 시스템
  • 파이썬을 설치하면 사용 가능
  • 장고도 pip 패키지 중 하나

가상환경 만들기

python -m venv myvenv

가상환경 활성화(가상환경이 있는 디렉터리에서)

. myvenv/Scripts/activate

가상환경이 활성화되면 (myvenv) 가상화활성화된 표시가 뜹니다.

장고 프로젝트 만들기

장고 패키지 설치(가상환경 켠 상태에서)

pip install django

프로젝트 생성

django-admin startproject firstproject

  • firstproject 폴더가 두 개 있음
  • 상위 폴더 이름 바꾸기 firstproject → first

앱 만들기

  • app은 프로젝트의 구성 단위

  • project는 app들이 모여서 구성

  • project의 기능 하나마다 app을 만들어 주는 것이 좋음

  • manage.py가 있는 폴더에서 만들기

cd first
python manage.py startapp appname

 

  • settings.py에 앱 등록하기

  • 앱은 만들고 나면 settings.py에 항상 등록해줘야 함

  • settings.py의 INSTALLED_APPS에 'appname.apps.AppConfig' 형식으로 작성


app 내의 구조 살펴보기

  • 장고는 app마다 M(models.py), T(templates), V(views.py)를 가지고 있습니다.
  • templates 폴더는 필요할 경우 직접 만들어줘야 합니다.

Hello World 띄워보기

  • index.html에 Hello World 띄우기
  • templates 폴더 내에 html 파일을 만들어줍니다.

views.py에 기능 구현

  • index라는 함수를 만들어줍니다. 이 함수는 요청이 들어오면 index.html 페이지를 띄워주는 역할을 합니다.

  • render : 특정 html 페이지를 렌더링, 최대 3개의 인자를 받는다.
    1. request
    2. html 파일의 경로(templates 폴더 바로 아래부터)
    3. html 파일에서 사용할 변수를 딕셔너리 형태로 전달

urls.py에서 url 요청을 views.py로 연결

urls.py는 route입니다. 주소창에 입력된 url에 따라 views.py의 함수를 실행합니다.

urls.py에서 myapp의 views.py에 있는 함수를 사용할 수 있도록 myapp의 views.py를 임포트 합니다.

URL은 view와 template을 이어주는 역할을 하고, 이 부분을 만들어 주는 작업을 URLconf라고 합니다. 

path 함수는 3가지 인수를 받습니다.

  1. route(도메인 뒤에 붙는 url 부분)
  2. 실행하고자 하는 views.py 안에 정의된 함수
  3. 이 path의 이름(변수)

서버 run

여기까지 하고 서버를 돌려보겠습니다.

python manage.py runserver

도메인 뒤에 index/를 붙여주면 Hello World가 뜹니다.


템플릿 변수

아까 index 함수에서 정의해준 hello 변수를 html상에 출력해보겠습니다. {{ }} 중괄호 안에 정의해준 변수를 넣으면 됩니다.

그러면 변수가 잘 출력됨을 확인할 수 있습니다.

정리

  • M : DB 저장 형태를 설계하는 부분
  • T : 사용자에게 보이는 부분
  • V : 로직을 설계하고 기능을 구현하는 부분, 데이터를 처리하고 가공하는 부분
  • URLconf : 유저가 보는 화면으로 전환해주는 부분. 입력한 도메인에 따라 views.py의 함수를 실행하는 곳
Comments